Temat: wczytano="EOF"
Czy gdy odpowiedź w programie do sprawdzania ocen-win jest błędna z powodu: wczytano="EOF", może to oznaczać, że komputer jest za słaby by obsłużyć tak duży test, czy jest to (na pewno) spowodowane błędem w działaniu programu z rozwiązaniem zadania?
Możesz spróbować odpalić ten test ręcznie i zobaczyć, co się wtedy stanie.
Testy ocen są do pobrania w zakładce Pliki.
Testy ocen są do pobrania w zakładce Pliki.
Miałem ten sam problem. Jestem pewny że piszesz i kompilujesz program w Code blocks, wklej kod i skompiluj go do .exe w VS i będzie działać :)
Rekomenduję używanie oprogramowania dostępnego na dalszych etapach Olimpiady (np. geany, code-blocks, neovim), a w szczególności odradzam oprogramowanie niewolne.
Jeśli pisząc VS nie miałeś na myśli programu Visual Studio, tylko auto marki Holden (https://en.wikipedia.org/wiki/Holden_Commodore_(VS)), to bardzo przepraszam za błędne założenie.
Tez mam w środku wykonywania programu oczekiwano "-1" a wczytano "EOF" - zgaduje że problem jest gdzieś w kodzie i program nie wykonuje się poprawnie?
Pomijając strasznie skrajne przypadki (nie, thinkpad kupiony za dwa piwa i gumę kulkę nie jest nawet blisko skrajnego przypadku), jest to niemożliwe. Twój program kończy pracę szybciej niż powinien. Jak już ktoś powiedział, odpalenie testu ręcznie powinno dać chociaż częściową odpowiedź.
@Filip Ksobiak na twoim miejscu sprawdziłbym czy test działa pod sio. Różnice w działaniu wynikają stąd, że vs używa domyślnie innego kompilatora niż codeblocks, przez co wyjściowy program jest diametralnie inny. Nie mam wystarczającej wiedzy żeby to jakoś ładnie wyjaśnić (pewnie jest to mocno guglowalne), ale z własnego doświadczenia wiem że kompilator vsowy jakoś lepiej sobie radzi wtedy kiedy program pisze tam gdzie nie powinien i czasami przy pisaniu poza zakresem jakieś tablicy nie wyrzuca segfaulta, przy czym gcc (ten drugi) robi to praktycznie zawsze. No a na olimpiadce używany jest gcc, stąd są spore szanse że tutaj nie przejdzie.
@Filip Ksobiak na twoim miejscu sprawdziłbym czy test działa pod sio. Różnice w działaniu wynikają stąd, że vs używa domyślnie innego kompilatora niż codeblocks, przez co wyjściowy program jest diametralnie inny. Nie mam wystarczającej wiedzy żeby to jakoś ładnie wyjaśnić (pewnie jest to mocno guglowalne), ale z własnego doświadczenia wiem że kompilator vsowy jakoś lepiej sobie radzi wtedy kiedy program pisze tam gdzie nie powinien i czasami przy pisaniu poza zakresem jakieś tablicy nie wyrzuca segfaulta, przy czym gcc (ten drugi) robi to praktycznie zawsze. No a na olimpiadce używany jest gcc, stąd są spore szanse że tutaj nie przejdzie.
Do wykrywania takich rzeczy, czyli np. wychodzenia poza tablicę, polecam dodatkowe flagi do gcc: -fsanitize=address,undefined -fno-sanitize-recover -fstack-protector.
Spowalnia to program zaledwie dwukrotnie, a powie nam o jakimkolwiek wyjściu poza tablicę czy przekręceniu się zmiennej.
Spowalnia to program zaledwie dwukrotnie, a powie nam o jakimkolwiek wyjściu poza tablicę czy przekręceniu się zmiennej.
Dzięki za pomoc, podejrzewam, że gdzieś w kodzie mam jakiś błąd, bo w ostatnim (największym) teście, gdy wyśle się program na sio wychodzi błąd (liczby się nie zgadzają), na mniejszych liczbach przechodzi przez testy. A myślę (mam nadzieję), że wyniki w tych testach na SIO są dobre.
Korzystam z CodeBlocks.
Próbowałam odpalić go ręcznie przez przekopiowanie danych i wklejenie ich w CodeBlocks, ale komputer się wtedy zawieszał. Olaf, czy możesz sprecyzować co masz na myśli mówiąc "odpalić ten test ręcznie", bo może jest jakiś sposób na który nie wpadłam?
Przy innym zadaniu miałam ten sam problem, znowu przy największym teście było "EOF" zamiast jakiejś wartości. Zmniejszyłam liczbę pętli i przeszło przez test poprawnie, więc nie wiem czy to jednak nie kłopot z szybkością.
Jak znajdę działające rozwiązanie to dam znać.
Korzystam z CodeBlocks.
Próbowałam odpalić go ręcznie przez przekopiowanie danych i wklejenie ich w CodeBlocks, ale komputer się wtedy zawieszał. Olaf, czy możesz sprecyzować co masz na myśli mówiąc "odpalić ten test ręcznie", bo może jest jakiś sposób na który nie wpadłam?
Przy innym zadaniu miałam ten sam problem, znowu przy największym teście było "EOF" zamiast jakiejś wartości. Zmniejszyłam liczbę pętli i przeszło przez test poprawnie, więc nie wiem czy to jednak nie kłopot z szybkością.
Jak znajdę działające rozwiązanie to dam znać.
Chodziło mi mniej więcej o właśnie przekopiowanie danych. Jeśli przy wklejaniu do terminala komputer się wiesza, to można wejść w osobny terminal (bodajże eksplorator plików -> folder z programem -> kliknąć pasek u góry z ścieżką -> cmd) i przekierować wejście:
program.exe < wejscie.in
Jeśli nawet to zawiesi komputer, to na pewno wina leży po stronie programu.
Według mnie nie jest to problem z szybkością, choć nie jestem w stanie zagwarantować poprawności programu ocen-win. Powodem jest wypisywanie zbyt małej ilości wyjścia, o czym ktoś już chyba wspomniał na tym threadzie.
program.exe < wejscie.in
Jeśli nawet to zawiesi komputer, to na pewno wina leży po stronie programu.
Według mnie nie jest to problem z szybkością, choć nie jestem w stanie zagwarantować poprawności programu ocen-win. Powodem jest wypisywanie zbyt małej ilości wyjścia, o czym ktoś już chyba wspomniał na tym threadzie.
Quality post z tymi flagami, dałbym serduszko gdybym mógł
A jeżeli chodzi o ocen-win, no to jego poprawność jest akurat praktycznie pewna. To jest bardzo prosty skrypt, który robi właściwie niewiele więcej poza zwykłym odpaleniem programu. W razie czego każdy może sobie zobaczyć co jest w środku.
A jeżeli chodzi o ocen-win, no to jego poprawność jest akurat praktycznie pewna. To jest bardzo prosty skrypt, który robi właściwie niewiele więcej poza zwykłym odpaleniem programu. W razie czego każdy może sobie zobaczyć co jest w środku.
A wie ktoś tutaj jak naprawić to, że na sprawdzarce na sio sprawozdanie jest OK a na ocen-win wychodzi EOF na każdym teście już na pierwszym znaku (tak jakby program nie wypisywał zupełnie nic, a przecież testy przykładowe na sio przechodzą)?