• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Spoj stos - problem

VPS Starter Arubacloud
0 głosów
250 wizyt
pytanie zadane 2 stycznia 2018 w SPOJ przez niezalogowany
zmienione kategorie 2 stycznia 2018 przez draghan

Witam

http://pl.spoj.com/problems/STOS/ te zadanko na SPOJ'u próbuję zrobić.

Mój kod:

#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
    int ile=0;
    string znak,tab[10],a[10];
    while(cin >> znak)
        {
        cin >> a[ile];
        if(znak == "+")
            {
                tab[ile] = ":)";
                ile++;
            }
        else if(znak == "-")
            {
                tab[9] == a[ile];
                ile--;
                if(ile<0) system("stop");
            }
        else  if(ile >= 10)
            {
                tab[ile] = ":(";
                ile++;
            }
        }
        for(int i=0;i<9;i++)
        {
            cout << tab[i] << endl;
        }

    return 0;
}

Problem jest taki że po wpisaniu 22 plusów, liczb oraz minusów programik crash'uje.

Czy mógłby mi tkoś napisać czemu oraz czy mój pomysł na rozwiązanie tego jest dobry?

komentarz 2 stycznia 2018 przez Eryk Andrzejewski Mędrzec (164,260 p.)
system("stop")

Co to jest za czarodziejstwo? surprise

komentarz 2 stycznia 2018 przez niezalogowany
No, najmocniej przepraszam, moja nieudolna próba. Nie wiem, nie mam pomysłu jak zrobić aby gdy skończę wpisywać wyświetliło mi wyniki. Pochwalę się że zrobiłem to zadanie, ale tylko z podaną liczbą zestawów. Czy mógłbym liczyć na jakiś "protip" również odnośnie tego?

1 odpowiedź

0 głosów
odpowiedź 2 stycznia 2018 przez Arkadiusz Sikorski Pasjonat (20,160 p.)
wybrane 2 stycznia 2018
 
Najlepsza
  • Do wczytywania znaku (+/-) nie musisz używać stringa, wystarczy char. 
  • Jeśli wczytano znak plus, to następnie powinno wczytać się liczbę, Ty umieszczasz po prostu na stosie ":)" (sprzeczność z poleceniem).
  • Do wczytania liczby, która ma być umieszczona na stosie warto byłoby użyć typu liczbowego, na przykład int.
  • Na standardowym wyjściu powinna zostać wyświetlona liczba lub odpowiedni uśmieszek po każdej operacji - jeśli operacja dodania się udała - :), jeśli nie udała (stos pełny), to :(. Analogicznie z usuwaniem, jeśli usunięto element ze stosu, to wyświetlamy odpowiednią liczbę zapamiętaną w tablicy, a jeśli stos jest pusty, to :(. Ty wyświetlasz zawartość całego stosu po każdej operacji.
  • W linii 23 sprawdzasz, czy stos nie jest przepełniony, używasz do tego else-if. Warunek na ilość elementów na stosie powinien być sprawdzany przed ewentualną operacją dodawania/usuwania (jako pierwszy if, a warunki na obecność + lub - jako kolejne), żeby uniemożliwić pisanie lub odczytywanie elementów leżących w pamięci poza tablicą.

Podobne pytania

0 głosów
1 odpowiedź 473 wizyt
pytanie zadane 26 września 2017 w SPOJ przez DaViDoWsKy Nowicjusz (150 p.)
0 głosów
1 odpowiedź 296 wizyt
pytanie zadane 24 maja 2020 w SPOJ przez szrek2002 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 276 wizyt

92,452 zapytań

141,262 odpowiedzi

319,077 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...