przychodzi admin do lekarza admin: panie doktorze, ostatnio wątroba mnie boli, chyba nie działa prawidłowo lekarz: co pan powie, a u mnie działa prawidłowo
Ale to z okresu, kiedy byłem skłonny kopiować cudze kody AC by na własne oczy przekonać się, że to ja robię coś źle, a nie SPOJ oraz by móc oglądać lepsze od moich kody.
Albo 4 lata temu w ciągu 2 min utworzyłem zupełnie dziki kod ze scanfami i printfami, w co nie wierzę.
A ja mam pytanie bo nie rozumiem treści a nie mam szklanej kuli. Z fusów też nie potrafię wywróżyć. Skąd mam wiedzieć który zestaw danych jest ostatni żeby zakończyć program i wyświetlić sumę wszystkich zestawów? W treści nie jest to napisane.
Twój program ma działać dopóki podawane są dane. Tak zwane wczytywanie nieokreślonej liczby danych. Było to już na forum poruszane, również w tym wątku da się znaleźć jak to zrobić.
Ja nie wiem czy to jest tak trudno zrozumieć co mam na myśli? Kiedy jest ten moment że skończył się ostatni zestaw? Albo inaczej bo znów nie zrozumiesz. Skąd wiadomo że jakiś tam zestaw jest ostatni i nie będzie po nim już następnego?
@manjaro Czy możesz teraz potwierdzić lub zaprzeczyć czy odpowiadałem na Twoje pytanie, a Ty po prostu nie rozumiałeś mojej odpowiedzi? Napisałem, że temat nieokreślonej ilości danych już był poruszany nawet w tym temacie. Ta pętla była w tym temacie.
Edit: Tak po prostu dla mojej satysfakcji.
Edit2: Możesz przy okazji wyjaśnić dlaczego wstawianie takiej pętli jest kompletnie bez sensu bo ani ja ani pewnie inni forumowicze tego nie wiedzą. Zwykły while - dopóki są dane… działaj.
@manjaro to nie jest twoje pierwsze pytanie na forum, ani nie jest to twoje pierwsze AC. Nie jesteś więc początkującym użytkownikiem SPOJ’a. Mimo to zamiast łatwiej, trudniej mi jest Ciebie zrozumieć. Masz ciągle pretensje do niezrozumiałej [przez Ciebie] treści zadań, ale sam ciągle zadajesz jeszcze bardziej niezrozumiałe pytania a potem masz pretensje do pomagających. Powinieneś jednak wiedzieć, że odpowiadanie na forum wynika z dobrej woli i chęci a nie z obowiązku.
PS @manjaro, twój komentarz pod zadaniem, moim zdaniem jest spamem, pkt 2.
2018-08-10 16:05:52
Trzeba mieć chyba szklaną kulę żeby wiedzieć kiedy wypisać sumę wszystkich zestawów. Treść bez sensu
|Uwagi:|
Nie nadsyłaj żadnego kodu źródłowego tutaj!|
Proszę zamieszczaj krótkie uwagi i komentarze, nie spamuj!|
Szerszą dyskusję (wskazówki, pomysły, rozwiązania) znajdziesz na forum.|
Autorzy zadań mogą usunąć lub ukryć dowolny komentarz oraz mogą zamieszczać kod w html-u (np. w celu udostępnienia odsyłaczy).|
Oczywiście, mogę wyjaśnić. Dlatego że użytkownik nie ma normalnej programowej możliwości wyjścia z tej nieskończonej pętli. Jedyne możliwości to jakieś ALT+F4 albo CTRL+ALT+DEL albo CTRL+C lub CTRL-D albo wyjąć baterię To tak jakby dać komuś klucze do domu bez drzwi… Wyświetlenie sumy końcowej nigdy się nie wykona bo nie ma możliwości wyjścia z nieskończonej pętli. O to mi chodzi.
Poza tym wielu użytkowników, w tym również ja było przekonanych że wyjście z pętli kończy wprowadzenie w zestawie tylko jednej liczby 0. Sugerować mogą to kody pojawiające się w tym wątku.
Eee… co? Program ma wczytać i przetworzyć całe wejście, którego rozmiar nie będzie podany wprost. Tyle. Nota bene jest to klasyczna sytuacja w praktyce. Przykład - parsowanie przeciętnego csva. Nie wyobrażam sobie by klient dostał program z informacją, że musi sobie wcisnąć jakieś ALT+F4 bo inaczej nie wyjdzie z nieskończonej pętli i program tak sobie będzie wisiał i wisiał.
Z treści zadania dowiadujemy się, że: “Poszczególne zestawy zostaną rozdzielone znakiem nowej linii” oraz, że: “Pojedynczy zestaw składa się z ciągu liczb całkowitych, rozdzielonych spacjami i kończących się zerem.”. Poza tym wiemy, iż: “(…) podana zostanie pewna nieokreślona ilość zestawów danych”. Nie rozumiem pogrubionego fragmentu, ale treść zadania jest jasna podobnie jak przykład do niej.
Co do użytkowników świetną wskazówką jest pole “Rozwiązało osób” zawierające liczbę 3897. Nie twierdzę, że wszyscy zrozumieli treść zadania od co. Być może niejeden skopiował czyjś kod aby zobaczyć jak sobie poradzić z nieokreśloną liczbą testów. Potem ludzie (być może?) przeanalizowali kod i dowiedzieli się czegoś. Być może wielu pytało - niekoniecznie na tym forum. Pewnie niektórym pomogli nauczyciele informatyki albo lokalne guru. Inni analizowali treść przez kilkanaście minut. Natomiast:
to w moim odczuciu ataki osobiste. Z tym pół biedy: sądząc po liczbie zadań jesteś dość nowy, dużo się uczysz, frustracja przy niepowodzeniach jest zrozumiała, @redysz focha nie strzeli (chyba ), … . Natomiast:
to już całkowicie niemerytoryczne i bezpodstawne ataki ad personam na autora zadania. Zwracam uwagę na komentarz przy treści zadania zawierającej fragment: “Na samym końcu należy dodatkowo podać sumę wszystkich wczytanych z wejścia liczb”.
Autorzy nie mają płacone za tworzenie zadań, a przy takich uwagach ochoty na ich tworzenie również.
No właśnie ja też sobie nie wyobrażam sytuacji gdzie klient dostanie program z niekończącą się pętlą z której nie ma wyjścia… A tutaj mamy właśnie do czynienia z takim programem. Pól biedy jeszcze że pętla jest nieskończona bo to program teoretyczny i wiele już takich było wcześniej. Ale cały problem i zamieszanie tu wprowadza instrukcja która ma się wykonać po zakończeniu wczytywania danych, skoro z góry wiadomo że wczytywanie jest nieskończone i nie ma możliwości aby instrukcja się wykonała.
Analizując przykład który podał autor. Sugeruje on jednoznacznie że po podaniu trzeciego zestawu danych samotnego zera program jakimś cudem zakończył swoje działanie i wypluł sumę całkowitą. Siedziałem pół dnia nad tym co takiego skłoniło program do zakończenia wczytywania danych. Doszedłem do wniosku ( i sądząc po kodach innych osób że wielu przede mną również) że musiało to być samodzielne 0. Ale jak się później okazało niestety ot tak autor nagle sobie zakończył program (w magiczny sposób, bo program tego nie uwzględnia) i wypisał wynik.