Aby móc dodać pytanie związane z platformą SPOJ musisz przestrzegać pewnych zasad.
- Problem, którego dotyczy Twoje pytanie powinien mieć charakter problemu ze składnią języka, w którym piszesz.
- Nie podawaj swojego kodu w takiej formie, jaką wysyłasz do sędzi - wyślij inny składniowo program, jego wycinek, kawałek który sprawia, że nie działa. Niech kod, który wysyłasz na forum nie podpowiada innym użytkownikom sposobu rozwiązania danego problemu.
- Nie proś o gotowca - nikt za Ciebie nie zrobi tego programu. Może wskazać Ci ścieżkę do rozwiązania problemu, może podpowiedzieć Ci jakich narzędzi powinieneś użyć.
Możesz w tej chwili tego nie rozumieć. SPOJ jest platformą, z której korzystają rekruterzy, różne firmy mają podpisane kontrakty z nimi, aby móc wybierać dobrych programistów. Stając po stronie osób, które chcą otrzymać rzetelnego pracownika, który jest w stanie rozwiązywać zróżnicowane i ciekawe problemy, powiedz mi - jak byś się czuł gdybyś odkrył, że osoba, którą rekrutujesz nie rozwiązywała sama tych zadań? Zatrudniłbyś takiego pracownika?
Jeszcze ~8 lat temu w Internecie było nie do pomyślenia, aby ktokolwiek na liście dyskusyjnej, forum czy IRCu zapytał się o zadanie ze spoja. To był fenomen. Każdy rozwiązywał i nikt nikogo nie pytał o te zadania. Dziś jest inaczej. Zamiast pomyśleć kilka chwil dłużej, wsiadasz na forum i piszesz pytanie w stylu "czemu nie działa". Wyobraź sobie programistę FORTRANa, który przez kilka tygodni dziurował program na taśmie perforowanej, pojechał 200km do najbliższej uczelni i miał go uruchomić. Zanim cokolwiek zrobił - sprawdził swój program na miliony sposobów, czy aby na pewno wszystko dobrze napisał, i czy dobrze działa. Robił to na kartce papieru i w głowie.
Krótka instrukcja szukania błędów w swoich programach:
- Sprawdź, czy masz wszystkie zewnętrzne biblioteki, które są potrzebne do tego programu. Może jakaś funkcja nie jest w standardowej, tylko np w cmath?
- Sprawdź wszystkie elementy składni języka - klamry, średniki na końcu linii, czy kropka z przecinkiem się nie zmieniła
- Sprawdź poprawność nazywanych zmiennych: pamiętaj, że małe L i cyfra 1 mogą się w kodzie zmieszać - tak jak duże O i cyfra 0
- Sprawdź, czy program zwraca wartość po wykonaniu - dla spoja jest to ważne, ponieważ automat musi sprawdzić kod wyjścia.
- Sprawdź, czy nie masz żadnych literówek.
- Upewnij się, czy na pewno dobrze napisałeś instrukcję if, else, else if, swicht...case. To jest bardzo częsty powód błędnie działających programów.
- Sprawdź, czy na pewno nie masz pętli nieskończonych.
Generalnie sprowadza się wszystko do dogłębnej analizy swojego kodu. Te rzeczy, które wymieniłem to tylko składnia - niestety, jest to jeden z najczęstszych problemów programistów. Później są błędy logiczne i ukryte, z którymi już na forum możemy Ci pomóc.
Podsumowując:
- nie podawaj swojego kodu w postaci prawie gotowej
- nie proś o gotowe rozwiązania
- staraj się przed zadaniem pytania dogłębnie sprawdzić czy nie popełniłeś drobnych błędów
No i pamiętaj, że spoj to również zabawa, która przynosi najwięcej satysfakcji, gdy rozwiązujesz problemy samodzielnie. Pamiętaj o tym i nie psuj zabawy innym pasjonatom :)