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