Testowalem na ideone i wszystko cacy, ale jednak na spoju ma blad kompilacji. Ktos moze ma pomysl dlaczego ? link do ideone58
Dziwne, że kompilacji, a nie wykonania, ale jeżeli tą linijką:
i = lista.erase(i);
usuniesz ostatni element z listy, to i będzie skazywać na lista.end(). Jak teraz zrobisz i++ to błąd gotowy.
PS. Zrób porządek i dodaj klamry w każdym ifie i forze, żeby było widać co się tam dzieje w jakiej instrukcji, bo tak to trzeba się wczytywać i m.in. przez to są tego typu problemy.
Na ideone testowałeś, kompilując C++4.3, a na SPOJ'u C++5
Zobacz jak jest cacy na ideone c++5: http://ideone.com/RwDVl041
prog.cpp:14:95: error: 'EOF' was not declared in this scope
PS
Gdybyś kliknął w błąd kompilacji na SPOJ'u, też by CI to pewnie wyświetliło.
Z treści zadania:
"Zestawy składają się z liczby całkowitej, po której następuje spacja i ciąg liczb całkowitych rozdzielonych spacjami."
Czy możliwe jest by po pierwszej liczbie całkowitej wystąpił ciąg liczb, ktory nie zawiera zadnej liczby?
czyli:
in:
3 (pusto)
out:
-
Jeżeli odpowiedź na to pytanie jest przecząca to poproszę Was o sugestie (testy bądź krytykę ) dotyczące kodu:
kod usuniety
Dzięki z góry za pomoc.
Zadanko nie chce mi uparcie przejść do AC, a dyskusja i podpowiedzi w tym wątku powyżej nie pomogły mi rozwiązać problemu.
https://ideone.com/nG262936
Wczytuje GETLINEm wszystko do STRINGA a potem szukam spacji i minusow i tworzę z tego tablice liczb.
Zadanie jest w kategorii łatwe wiec nie podejrzewam żeby sędzia sprawdzał liczby nie mieszczące się w LONG LONG, ale nie mam pomysłu co jeszcze innego może być źle.
Zapominałem dopisać że w pierwszej wersji nie wiedziałem jeszcze jak program ma się zatrzymać i robiłem to ręcznie - po wpisaniu linii danych wciskałem CTRL+Z i jeszcze Enter.
Wtedy pierwsza wersja pokaże poprawny wynik. Zapomniałem o tym napisać
Jak pisałem tę pierwszą wersję jeszcze nie wiedziałem jak wprowadzić nieznaną ilość razy, nieznaną ilość danych, bo się uczę dopiero programować.
Potem podpatrzyłem jeden z linków w tej dyskusji i zrobiłem jak w nim, czyli wczytanie z Getline i rzutowanie na long long i dzięki temu w drugiej wersji jest już OK możesz wprowadzać dane i od razu po Enterze jest wynik, mam prośbę więc o zerknięcie i wychwycenie błędu w drugiej wersji.
Pierwsza wersję dla porządku usuwam.
Jeśli to było dla Ciebie widoczne od razu to gratuluję wprawy, ja musiałem się chwilę pozastanawiać że chodzi o liczenie ujemnych z pozycji minusów.
Nawet mogę napisać że wiem czemu tu popełniłem błąd. Uparłem się żeby skończyć zadanko za jednym posiedzeniem późno wieczorem jak już byłem zmęczony i na sam koniec się zorientowałem że zapomniałem zrobić algorytmu do liczenia ujemnych i na szybko go dopisałem, ale program nie zadziałał nadal.
Następnego dnia już zapomniałem że te minusy pisałem na szybko i nie sprawdzałem już dokładnie ich liczenia i kłopoty gotowe. Przestroga żeby nie programować na siłę jak się jest już zmęczonym.
Dzięki za pomoc.
bo (nawet dobre) uwzględnienie liczb ujemnych nie mogło mieć znaczenia - w danych testowych tego zadania nie ma ani jednego minusa
zaś złe dodało dodatkowy błąd
zaś generalnie musisz popracować nad optymalizacją kodu - znaczna część kodu w tym zadaniu jest niepotrzebna a większość tego co by zostało można znacznie poprawić
Mam taki kod z użyciem <set>
Z tego co widzę dane do set mam wpisane poprawnie. Chciałbym iterować wstecz aż do wymaganej pozycjii. Jednak wychodzą mi głupoty.
Podpowie ktoś poprawnie iterować?
Thx
Na pierwszy rzut oka iterowanie masz w porządku. Według mnie błąd masz w samej logice. Być może źle interpretujesz treść zadania, bo jest trochę pogmatwana (chociaż przykładowe testy powinny rozwiać wszelkie wątpliwości). Ewentualnie (aczkolwiek w to raczej wątpię) nie wiesz do końca jak działa set.