@marmal95:
Odpaliłem twój program i wcale nie działa poprawnie dla testów z zadania. Dla testów z zadania zwraca:
a 5
k 1
l 1
m 1
o 1
t 1
Przez twoje kombinacje z cin program źle wczytuje linie. Chodzi mi o linijki:
cin.sync();
cin.clear();
Dla przykładowego testu z treści zadania wypisujesz zły wynik - sprawdź na http://ideone.com34
Prawdopodobnie wpisujesz dane "z ręki" i wtedy błędu nie widać, ale tak SPOJ nie działa. Czy umiesz sobie wyobrazić, że ktoś tam siedzi i wpisuje dane wejściowe na klawiaturze do programu?
Witam. SPOJ nie chce zaakceptować mojego kodu (błędna odpowiedź), a pomimo usilnych prób i dużej ilości testów dalej nie jestem w stanie znaleźć błędu. Czy ktoś mógłby pomóc mi znaleźć błąd, podpowiedzieć co zrobiłem źle lub podać przykład testowy dla którego mój program wyrzuca błędną odpowiedź? Z góry dziękuję za pomoc.
-------KOD USUNIĘTY---------
Ok zaakceptowane, dzięki wielkie za pomoc . Swoją drogą szkoda, że w treści zadania nie było ujęte, żeby na końcu każdego wiersza była spacja, zwłaszcza, że nie ma to zdaje się wpływu na wynik końcowy. Jeszcze jedno pytanie bo nie do końca rozumiem - cin.sync(); użyłem gdy natrafiłem na problem z opuszczeniem inputu w pierwszym obrocie pętli i wyguglowałem podobny przypadek, po czym zastosowałem to u siebie w kodzie i zadziałało, ale dalej nie do końca kumam o co chodzi i czemu lepiej użyć cin.ignore(); mógłbyś mi przybliżyć ten temat (ew. podesłać miejsce gdzie jest to klarownie wytłumaczone)?
Bardzo ciężki kawałek kodu napisałeś Ci powiem. Widziałeś chociaż swój out dla przykładu spod zadania? :
-1078343384
a 7
k 1
l 2
m 2
o 1
p 1
s 1
t 1
4
na początku jakaś liczba, poprzedzona tabulacjami, ostatniej litery brakuje. O do ... while możesz spokojnie zapomnieć w programowaniu - więcej z nim kłopotów niż pożytku.
Ja, jako "stary wyjadacz" czytałbym te dane np. tak:
#include <iostream>
using namespace std;
int main() {
int ile;
char ch;
cin >> ile;
while(cin >> ch){
//zrób to coś z ch
}
return 0;
}
Masz wczytane dane w 5 linijkach, bez białych znaków, możesz spokojnie zająć się liczeniem ile razy która była.
Hej próbuję odpalić program z zadanka Zliczacz liter na spoju dostaję informację o błędnej odpowiedzi na idleone segmentation fault. https://ideone.com/Eq7jtl29 Lokalnie kompiluje się bez problemu zarówno g++ jak i przez gcc z parametrem --std=c99 Gdyby ktoś podpowiedział gdzie jest błąd będę wdzięczny