[C++/STL] Problem z używaniem stosu
Ostatnio zmodyfikowano 2009-09-30 19:45
Lord_Voldemort Temat założony przez niniejszego użytkownika |
[C++/STL] Problem z używaniem stosu » 2009-09-30 19:20:41 Witam napisałem program, który ma za zadanie symulować działanie stosu 10 elementowego. Na wejściu programu mam wpisać znak '+' lub '-'. Jeżeli wprowadzę '+' następnie muszę dodać liczbę do stosu i wyświetlić ":)". Jeśli wprowadzę znak '-' i stos nie jest pusty mam wyświetlić wypisywaną liczbę, a jeśli jest pusty komunikat ":(". Mój kod wydaje się byę dobry ale niestety taki nie jest. Proszę o pomoc ! #include <iostream> #include <stack> using namespace std; int main() { stack < int > stos; char znak; int liczba; cin >> znak; if( znak == '+' && stos.size() < 10 ) cin >> liczba; stos.push( liczba ); cout << ":)" << endl; if( znak == '+' && stos.size() > 10 ) cout << ":(" << endl; if( znak == '-' && stos.empty() ) cout << ":(" << endl; if( znak == '-' && !stos.empty() ) stos.pop( liczba ); cout << liczba << endl; } |
|
Lord_Voldemort Temat założony przez niniejszego użytkownika |
Stos » 2009-09-30 20:29:49 Właśnie pomyliły mi się troszeczkę funkcje w STL-u. To jest poprawiony kod prawie działający jednak wciąż wyświetla trochę złe wyniki. #include <iostream> #include <stack> using namespace std; int main() { stack < int > stos; char znak; int liczba; while( cin >> znak ) { if( znak == '+' && stos.size() < 10 ) { cin >> liczba; stos.push( liczba ); cout << ":)" << endl; } if( stos.size() > 10 ) { cout << ":(" << endl; } if( znak == '-' && stos.empty() ) { cout << ":(" << endl; } if( znak == '-' && !stos.empty() ) { liczba = stos.top(); stos.pop(); cout << liczba << endl; } } system( "PAUSE" ); } Błąd polega na tym, iż po wpisaniu do stosu liczby większej niż 10 nie wyświetla się ":(" |
|
jimmye |
» 2009-10-04 10:56:38 Próbowałeś tak ? #include <iostream> #include <stack> using namespace std; int main() { stack < int > stos; char znak; int liczba; while( cin >> znak ) { if( znak == '+' && stos.size() < 10 ) { cin >> liczba; stos.push( liczba ); cout << ":)" << endl; } else if( znak == '+' && stos.size() >= 10 ) { cout << ":(" << endl; } if( znak == '-' && stos.empty() ) { cout << ":(" << endl; } if( znak == '-' && !stos.empty() ) { liczba = stos.top(); stos.pop(); cout << liczba << endl; } } system( "PAUSE" ); }
|
|
manfred |
» 2009-09-30 19:45:49 Klamerki ci w jednym miejscu zjadło. W innym zresztą też, i jakoś dziwnie wykonujesz pop. |
|
« 1 » |