Czasami otwiera się mi w kieszeni, ale możesz to potraktować, jako szwajcarski scyzoryk, uniwersalny wytrych na różne bolączki:
1. Testowanie poprawności danych wejściowych.
Odp na pytanie w wątku: http://discuss.spoj.com/t/1211-niekolejne-niekolej/11447/17
Dlaczego to jest złe:?
if(n<0 || n>1000000)
exit(0);
To jest dodatkowe miejsce ewentualnego błędu i pomagający, muszą dodatkowo sprawdzić to miejsce, czy tu faktycznie nie ma błędu. Chcesz pomóc pomagającemu? Więc pomóż i gdy wysyłasz na forum, z prośbą o pomoc, usuń to. Po co to jest? Ano starasz się napisać idiotoodporny program, ale ani autor zadania ani sędzia do nich raczej nie należą, a to twój program w tym momencie może się tak zachować. Dlaczego? Bo gdyby jednak autor się pomylił ździebko, to twój program "obrazi sie", noi ok, ale nic "nie mówiąc" zakończy na tym swoją całą działalność. A przecież, gdy ma to być program idiotoodporny, to może warto coś zakomunikować, jeszcze raz poprosić [człowieka] o wprowadzenie danych, człowieka bo na pewno nie sędzigo na SPOJ'u. I na pewno [za]naprawdę nie można zakończyć cicho i jak by się nic nie stało - exit(0). Lepiej exit(-1), exit(1001) czy jakakolwiek inna wartość różna od zera i nie wykorzystywana w twojej obsłudze błędóœ.
Spróbuj nawet teraz tak poprawić swój kod i dodatkowo popsuć warunek, tzn, np:
if(n<0 || n>100)
exit(100);
i zobacz co się stanie.
created
last reply
- 5
replies
- 1.7k
views
- 2
users
- 2
likes
- 3
links