Implementacja prostego stosu – co zmienić, aby kod zadziałał?

0

Witam!
Rozwiązuję takie zadanie na SPOJu - https://pl.spoj.pl/problems/STOS/

Mój kod:

#include <iostream>
 
using namespace std;
 
int tab[10];
 
int main()
{
    int a, i=0;
    char znak;
    while(cin >> znak)
    {
        if(znak == '+')
        {
            cin >> a;
 
            if(i<10)
            {
                tab[i] = a;
                cout << ":)" << endl;
                i++;
            }
            else
                cout << ":(" << endl;
        }
        else if(znak == '-')
        {
            if(i<=10 && i>0)
            {
                cout << tab[i-1];
                i--;
            }
            else
                cout << ":(" << endl;
        }
    }
    return 0;
}
 
 

Spoj wywala WA.

Prosze o pomoc, co zmienić aby program działał?

0

oto jest wynik Twój:

:)
:)
:)
:)
:)
:)
:)
:)
:)
:)
:(
0987654321:(
 
0

? Przecież piszę << endl?

0

Ale po liczbach nie piszesz. Oprócz tego nie używaj endl tylko '\n'. Znaków tyle samo o szybkość większa.

0

Uff, dzięki ;) Wszystko działa.

0

Moglibyście mi powiedzieć do kiedy będzie się wykonywać while(cin >> znak)?
Po prostu nie mogę zrozumieć kiedy program zakończy prace :(

1

Teoretycznie do momentu wprowadzenia błędnego znaku, a w praktyce do momentu ręcznego przerwania jej przez użytkownika.

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