316 Rozdział 14. Zadania różne
void main i)
(
cout |
<< |
"1+1="« |
transl("1+1") << |
endl; |
// |
2 |
OK | ||
cout |
<< |
"2*2*3=” |
<< |
transl(”2*2*3") |
« |
endl; |
// |
12 |
OK |
cout |
<< |
"2+2*3=” |
<< |
transl("2+2*3") |
<< |
endl ; |
// |
8 |
OK |
cout |
<< |
"2+2+3=" |
<< |
transl("2 + 2 i 3") |
« |
endl ; |
// |
7 |
OK |
cout |
<< |
"2+2*0=" |
« |
transi("2+2*0") |
<< |
endl ; |
// |
2 |
OK |
cout |
<< |
"2*3+4*5 |
= " |
<< transl("2*3+4 |
*5” |
i <<endl; |
// |
46 |
źle |
I
Proszę się zastanowić, dlaczego funkcja transl źle obliczyła ostatnie wyrażenie? (Wskazówka: proszę odtworzyć „kierunek” analizy wyrażenia.)
Dla zaawansowanych programistów C++: proszę przeanalizować zarządzanie pamięcią w funkcji trans/. Czy użycie new i c/e/ete jest na pewno optymalne w tym przypadku?