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

pl.SPOJ.com - Stos

Object Storage Arubacloud
0 głosów
322 wizyt
pytanie zadane 15 lipca 2016 w C i C++ przez am49 Początkujący (420 p.)
edycja 16 lipca 2016 przez am49

Witam serdecznie,

rozwiązuję zadanie ze SPOJa (klik) i choć wyniki mam prawidłowe, to sędzia wciąż odrzuca moje rozwiązanie. Czy ktoś wie gdzie mogę mieć błąd? Z góry dziękuję za pomoc.

kod

1 odpowiedź

+1 głos
odpowiedź 15 lipca 2016 przez MetRiko Nałogowiec (37,110 p.)
wybrane 16 lipca 2016 przez am49
 
Najlepsza
Jeżeli chcesz, krótką odpowiedź to myślę, że wystarczy podać ci przykład, dla którego twój program nie zadziała:
Wejście:
+
1
-
+
2
-
+
3
-
Wyjście:
:)
:)
:)
Według założeń zadania powinno być:
:)
1
:)
2
:)
3

@Edit
Mała podpowiedź: proponuję zapisać najpierw wszystkie polecenia do osobnej (znacznie większej) tablicy.
komentarz 15 lipca 2016 przez am49 Początkujący (420 p.)
edycja 16 lipca 2016 przez am49

Przerobiłam program, ale nadal nie działa tak jak powinien. Jeśli w jednym miejscu wstawię --i to działa test od Ciebie, a jeśli w innym i++ to działa ten ze SPOJa. I nie ma porozumienia, aby oba działały :) już zgłupiałam. Nie wiem jak zastosować się do Twojej rady.

kod

1
komentarz 15 lipca 2016 przez MetRiko Nałogowiec (37,110 p.)

Tu jest mój kod.. możesz z niego skorzystać i zobaczyć mój sposób na zrobienie tego zadania. Wszystko opiera się na wykonaniu dwóch pętli:
1. Wczytuje wszystkie polecenia do tablicy [com]
2. Wykonuje po kolei wszystkie operacje zapisane w tablicy [com] na tablicy [tab]
Natomiast symulowanie stosu opiera się na przestawianiu wskaźnika na dany element tablicy [tab].
Mam nadzieję, że to pomoże x)

#include <iostream>

int main()
{
    int com[200],
        tab[10];
	int *ptr=tab,
        *ptr_com=com;

    char c;
    int value;
    while(std::cin>>c)
    {
        if(c=='+')
        {
            *ptr_com=1; ptr_com++;
            std::cin>>value;
            *ptr_com=value;
        }
        if(c=='-') *ptr_com=-1;
        ptr_com++;
    }

    for(int *i=com; i<ptr_com; i++)
    {
        if(*i==1)
        {
            i++;
            if(ptr==tab+10){std::cout<<":(\n"; continue;}
            *ptr=*i;
            std::cout<<":)\n";
            ptr++;
        }
        else if(*i==-1)
        {
            if(ptr==tab){std::cout<<":(\n"; continue;}
            std::cout<<*(ptr-1)<<"\n";
            ptr--;
        }
    }
	return 0;
}

 

komentarz 16 lipca 2016 przez am49 Początkujący (420 p.)
edycja 16 lipca 2016 przez am49
No i już rozumiem swój błąd... :) Dziękuję i pozdrawiam!

Podobne pytania

0 głosów
1 odpowiedź 239 wizyt
0 głosów
1 odpowiedź 114 wizyt
pytanie zadane 18 września 2021 w C i C++ przez Dron Początkujący (280 p.)
0 głosów
2 odpowiedzi 702 wizyt
pytanie zadane 22 października 2017 w SPOJ przez Łuk Asz Nowicjusz (160 p.)

92,631 zapytań

141,491 odpowiedzi

319,862 komentarzy

62,011 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...