1 / 20
Sep 2015

Zadanie: http://pl.spoj.com/problems/TABLICA/154

Mój kod: http://ideone.com/4fHJvZ484

Mam problem z tym, że wczytuje nieokreślona ilość danych, ale mój program nie wychodzi poza tą pętle while (do wczytywania), a więc reszta programu nie jest wykonywana.

Nie wiem w jaki sposób mam poinformować program, że to już koniec wczytywania.

Prosiłbym o jakaś wskazówke, pomoc:)

Faktycznie, wszystko działa na SPOJ'u i akceptuje rozwiazanie. Gdy testowalem w konsoli to jednak nie chcialo mi wyjść z tej pętli while i nie pokazywało wyników, więc nie przyszlo mi do głowy, żeby wysyłać takie rozwiązanie. Może coś mój code blocks dziwnie działa albo sam komputer...

Bo należy w takich sytuacjach testować przekierowując dane z pliku, a na ideone.com wklejać input do okienka wejście [stdin]. Gdy testujesz z "ręki", na konsoli, to koniec strumienia danych sygnalizujesz ctrl+z lub ctrl+d [linux].

2 months later

2 4196295 32767 i potem jeszcze duża, losowa liczba to raczej nie jest prawidłowa odpowiedź na przykład z zadania. ta int tablica[a]; linia w tym zadaniu nie ma racji bytu, bo jest znane dopiero po wczytaniu wszystkich liczb. Tak więc musisz zastosować coś, co może przechować nieokreśloną ilość elementów.

9 months later

Witam Panowie i Panie :). Mam problem z rozwiązaniem zadania. Kompilator Xcode kompiluje i działa bez błędu, natomiast Ideone.com zwraca błąd: "Error in `./prog': free(): invalid next size (fast): 0x08f21a10"
Spoj oczywiście również nie przyjmuje mojego rozwiązania.

Można to zrobić na stringach pobierając dane z rzutowaniem na int'a ale nie chcę w ten sposób rozwiązywać tego zadania. Pomoże ktoś?

Jeżeli chcesz pomocy, to oczyść najpierw swój kod, usuwając zbędne komentarze, najlepiej wszystkie, bo wszystkie są zbędne || bezsensowne || wkurzające. Gdy to zrobisz i pokażesz taki poprawiony, czysty kod, wtedy na pewno ktoś Ci pomoże.

Sorry, na szybko wkleiłem nie patrząc dokładnie na zawartość kodu. Zachowałem się jak gówniarz. Obiecuję, że to się więcej nie powtórzy :slight_smile:

Ok :wink:

  1. DOpisz, na początku swojego kodu [powiedzmy w 9 linii]:
    cout << n << endl
  2. Na dole jest zielony przycisk Run [lub ideone it] <-- użyj go.
  3. Jeżeli nadal nie będziesz wiedział o co chodzi - z przyjemnością pomogę :wink:

Dzięki. Źle deklaruję tablicę? Zwraca mi wartość "n"=0.

Dokładnie tak. Czy tablica nie powinna mieć przynajmniej jeden element?

Ponieważ w zadaniu podano tylko, że ilość danych będzie niewielka, możemy na początek przyjąć n= 1.
np
int n = 1
jeżeli będzie za mało, przyjmujemy wielkość dwa razy większą i tak do skutku. Możemy takie powiększanie robić ręcznie, modyfikując kod lub zautomatyzować to, pisząc odpowiedni kod.
Dokładnie w taki sposób [mniej więcej] działa kontener vector, przy okazji powiększania kopiując zawartość mniejszego vectora do większego. Może więc warto zawrzeć bliszą znajomość z STL?

PS
Dla twojego testu wystarczy:
linia 8: int n = 16
ale równie dobrze możesz użyć od razu większej tablicy, np:
int n =1000

PS
W systemach 32 bitowych int long == int

Dzięki wielkie :wink: przy n=100 dostałem akceptację.
Zrobiłem dopiero kilka zadań na SPOJ-u i uczę się poprawnie czytać polecenie, jak widać jeszcze dużo przede mną :wink:
Dzięki raz jeszcze.

3 years later

Witam też mam problem z tym zadaniem na ideone jest ok ale sędzia najpierw wywalił "błąd wykonania (SIGABRT)"
potem że błędna odpowiedź. Powie mi ktoś co robię źle lub podpowie co można poprawić.
usuwam link - to było dziwne sędzia za 4 razem ten sam kod zaakceptował.

5 months later

Witam,
Mam problem z tym zadaniem, otóż niby działa dobrze ale sędzia nie przyjmuje. Prosiłbym o jakaś wskazówkę. Dzięki.

dzięki za podpowiedź, będę myślał jak to poprawić.