Przeczytaj informacje dla początkujących na forum. Po przeczytaniu (i zastosowaniu się do wymienionych tam porad) napisz, z czym dokładnie masz problem.
@bombardello zastanów się dokładnie co robisz np tutaj:
cin >> a;
switch (a)
{
case'+':
{
cin >> dane[rozmiar];
rozmiar++;
cout << ":)" << endl;
if (rozmiar == 9)cout << ":(" << endl;
break;
}
Załóżmy, że próba dodania elementu się nie uda to czemu rozmiar jest zmieniany i zostaną wypisane również ‘:)’? Zastanów się jak uniknąć próby odczytania pamięci poza tablicą. Włącz ostrzeżenia kompilatora, lub/i czytaj je - pomogą znaleźć banalne błędy:
prog.cc:38:10: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
}while(a=100);
~^~~~
prog.cc:38:10: note: place parentheses around the assignment to silence this warning
}while(a=100);
^
( )
prog.cc:38:10: note: use '==' to turn this assignment into an equality comparison
}while(a=100);
^
==
W jaki sposob pobrac dane w jezyku Python ? Wywala mi blad NZEC:
def Dodawanie(stos,liczba):
if len(stos)<10:
stos.append(liczba)
print(":)")
return stos
elif len(stos)>=10:
print(":(")
return stos
def Odejmowanie(stos):
if len(stos)>0:
print(stos.pop())
return stos
else:
print(":(")
return stos
stos=[]
flaga=0
while True:
a=input()
if flaga==1:
stos=Dodawanie(stos,a)
flaga=0
elif a=="+":
flaga=1
elif a=="-":
stos=Odejmowanie(stos)
Ponadto:
- Po co używasz zmienne globalne?
- Masz bardzo długi kod, spróbuj nad nim popracować. Dla przykładu mój kod liczył 37 linii, z całą pewnością mogę go jeszcze skrócić. Jestem pewien, że wielu ma znacznie krótsze kody. Oczywiście mam na myśli kody w C++, w innych językach może to być różnie.
- Masz za wiele zmiennych, naliczyłem ich 8. Ja mam tylko dwie zmienne.
- Masz zaimplementować stos: https://eduinf.waw.pl/inf/alg/001_search/0100.php;4
- Ja to zrobiłem pisząc klasę stos, jeśli wiesz jak tworzyć klasy to możesz tak zrobić, dodać metody push i pop, jeśli nie to albo tak nie rób albo dowiedz się jak pisze się klasy, co to pola klasy, metody klasy, modyfikatory public i private;
- znak ‘-’ oznacza zdjęcie liczby ze stosu i wypisanie ale jeśli stos jest pusty to nie da rady nic zdjąć i powinna wyświetlić się morda :(.
Można to robić na obydwa sposoby, to zależy od Ciebie. Ważne jest by zgadzało się to co jest wyświetlane, bo to jest sprawdzane. Metod implementacji pewnie można wymyślić wiele. Można stworzyć klasę stos jak to sugeruje czaffik z odpowiednimi funkcjami składowymi lub jak kto woli metodami.
Ja nie tworzyłem klasy ponieważ problem, jak się go już ogarnie jest naprawdę prościutki. Trzeba tylko zdecydować czy korzystać z tablic czy z klasy vector. Ja korzystam z klasy vector, ale myślę, że jest to kwestia gustu.
Hejka! Mam problem z zadankiem. Nie zalicza mi, bo “Przekroczono limit czasu”. Domyślam się, że jest to wynik braku końca programu, ale nie wiem jak zinterpretować “Pewna nieokreślona liczba zestawu danych”. Proszę o pomoc.
Taka podpowiedź: link12
w tym wątku już kilka razy tłumaczono, jak to zrobić - więc może przeczytaj ten wątek
wskazane jest przekazywanie kodu poprzez ideone.com1
w kodzie, który dołączyłeś w poprzednim poście nie ma takiej pętli
nie wiem też, co znaczy ale program wtedy nie działa w ogóle ? (jeżeli się kompiluje to działa, oczywiście może działać niezgodnie z twoimi oczekiwaniami, ale to zupełnie inny problem, prawdopodobnie wynikający z tego, że nie rozumiesz, jak ta pętla działa)
Cześć, czy ktoś mógłby zajrzeć w mój kod i podpowiedzieć, z jakiego powodu nie jest akceptowany przez sędzię?
Testy wejścia/wyjścia uzyskuję takie, jak podano w zadaniu.
Z góry dziękuję!
Link do kodu: https://ideone.com/NVyhxn13
Link do zadania: https://pl.spoj.com/problems/STOS/5