Programowanie. Teoria i praktyka z wykorzystaniem C++
Programowanie. Teoria i praktyka z wykorzystaniem C++
Programowanie. Teoria i praktyka z wykorzystaniem C++
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
6.7. WYPRÓBOWYWANIE DRUGIEJ WERSJI 205<br />
6.7. Wypróbowywanie drugiej wersji<br />
Moemy przetestowa nasz drug wersj programu. Wpisz 2 i znak nowego wiersza. Brak reakcji.<br />
Wpisz jeszcze jeden znak nowego wiersza, aby sprawdzi, czy program nie zasn. Nadal<br />
nic. Wpisz 3 i znak nowego wiersza. Jest odpowied — 2. Spróbuj wyraenia 2+2 ze znakiem<br />
nowego wiersza. Odpowied brzmi 3. Teraz na ekranie znajduj si nastpujce dane:<br />
2<br />
3<br />
=2<br />
2+2<br />
=3<br />
Hmm. Moe wprowadzenie funkcji putback() i uycie jej w funkcjach expression() i term()<br />
nie pomogo w rozwizaniu problemu? Spróbujmy czego innego:<br />
2 3 4 2+3 2*3<br />
=2<br />
=3<br />
=4<br />
=5<br />
Tak, to s poprawne odpowiedzi! Ale brakuje ostatniej (6). Wci mamy problem z tokenami,<br />
ale tym razem nie chodzi o ich zjadanie, lecz o to, e wynik jest zwracany dopiero po wpisaniu<br />
kolejnego wyraenia. Program nie drukuje od razu wyniku. Opónia to do momentu wczytania<br />
pierwszego tokenu nastpnego wyraenia. Niestety nie widzi go, dopóki nie naciniemy klawisza<br />
Enter po wpisaniu nastpnego wyraenia. Wniosek taki, e program nie dziaa le, tylko<br />
odpowiada z opónieniem.<br />
Jak to poprawi? Jednym z oczywistych rozwiza jest wprowadzenie „polecenia drukowania”.<br />
Rol t niech peni rednik, którego pojawienie si bdzie oznaczao koniec wyraenia<br />
i wymuszao wydruk wyniku. Przy okazji dodamy polecenie zamknicia programu. Do tego<br />
celu doskonale nada si znak k (od sowa koniec). Obecnie w funkcji main() mamy taki kod:<br />
while (cin) cout