adapter stosu

0

Witam. Może mi ktoś powiedzieć czemu mi ten warunek nie chodzi?


        if (stos.size() <= 0)
        cout << "error";

Jak coś zamieszczam też cały kod

#include <iostream>
#include <string>
#include <vector>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {

    using namespace std;

    int c;
    string x;
    vector < int > stos;

    do{

        cin >> x;

        if ((x=="push") || (x=="PUSH")){
            cin >> c;
            for( int i = 0; i < 1; i++ ){
                 stos.push_back( c );
            }
        }

        if ((x=="pop") || (x=="POP")){
            stos.pop_back( );
        }

        }while ((x!="end") && (x!="END"));

        if (stos.size() <= 0)
        cout << "error";

else{
        for( int i = 0; i < stos.size(); i++ )
        {
           cout << stos[ i ];
        }
}

    return 0;
}
0

No to dziękuj Bogu że nie chodzi.
Bo jak instrukcje z programów zaczną ci dookoła chodzić to zwariujesz.
Jeżeli masz na myśli że ci nie działa tak jak myślałeś że będzie działać to powiedz o co ci chodzi.
jak podasz:
push 1
pop
end
to na ekranie dostaniesz ten error.

0

zadanie polega na tym ,że jeżeli podam:
push
5
pop
pop
end

to ma wyświetlić error ,a on po prostu wysadza mi błąd w postaci takiej: http://scr.hu/0u5v/c0tsy

0

No to wstawiaj to sprawdzenie tam gdzie chcesz ten pop zrobić. Wiesz może cie to zadziwi ale okulary leżące w kieszeni nie działają. Zupełnie jak w twoim przypadku.

0

no tak przyznam wtedy ładnie działa ,ale ten napis error ma się wyświetlić po tym jak wpiszemy end ,a nie od razu po pop

1

No to jakaś dodatkowa zmienna bool OK=true;
Jeżeli robisz pop przy pustym to zamiast pop_back robisz Ok=false;
na końcu if(OK) wyświetlamy else error;

0

Ok dzięki wielkie działa. Nie wiem czemu na to nie wpadłem

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0