II Mistrzostwa Wielkopolski w Programowaniu Zespołowym, Poznań 3-4 grudnia 2004
tutorial

Czytanie danych i wypisywanie wyników

Wasze programy powinny czytać dane ze standardowego wejścia i wypisywać wyniki na standardowe wyjście (mówiąc w sporym uproszczeniu: z klawiatury i na ekran). W praktyce dane dla Waszego programu będą podawane z pliku i zbierane do pliku przy użyciu tzw. przekierowań. Z linii komend (polecenie cmd pod Windowsem) można wykonać to następująco: program <plik_wej >plik_wyj. W ten sposób możecie również testować programy na swoich stanowiskach (przekierowania działają zarówno pod Windowsem, jak i Linuxem). Dzięki temu nie będziecie musieli za każdym razem wpisywać danych z klawiatury.

Ze względu na to, że program jest sprawdzany na Sprawdzarce automatycznie, a nie przez człowieka, nie należy wypisywać nic więcej ponad to co opisano w specyfikacji zadania, ani oczekiwać na żadną reakcję użytkownika. W szczególności nie należy czekać na wciśnięcie klawisza na końcu programu, ani wypisywać komunikatów zachęty typu "Podaj liczbę:", czy ozdobników typu "Wynikiem jest:".

Do większości zadań plik wejściowy ma postać ciągu liczb całkowitych oddzielonych spacjami lub/i znakami nowej linii. Częstym błędem nowicjuszy (a raczej zbędną robotą) jest czytanie znaków do łańcucha, by później ręcznie z nich wydobyć liczby. To jest niepotrzebne, bo podstawowe funkcje (scanf) potrafią czytać liczby i pomijać odstępy między nimi, jakiekolwiek by one nie były. Z resztą zachęcamy do obejrzenia przykładowych programów na kolejnych stronach tutorialu. W razie gdybyście chcieli użyć innych funkcji (np. fgetc, fgets), to wiedzcie, że Linux i Windows inaczej reprezentują znak końca linii. Jako że Sprawdzarka będzie stać na Linuxie należy przyjąć, że jest to pojedynczy znak o kodzie 10 ('\n'). Nie zalecamy jednak pisać programów, których poprawność opierałaby się na tej wiedzy.

Wypisywanie danych raczej nie jest problemem. Należy jednak pamiętać by liczby oddzielać odstępami (np. 1 2 3 zamiast 123) i że jeśli w zadaniu trzeba wypisać coś innego niż liczby to każdy znak się liczy, także wielkość liter. Rodzaj oraz wielkość odstępów (szczególnie spacje na końcu linii) zazwyczaj nie mają znaczenia i mogą być dowolne (chyba, że zadanie wymaga sformatowania wyników), ale najlepiej trzymać się jak najbliżej specyfikacji wyjścia z treści zadania, dla bezpieczeństwa.

Należy przyjąć, że dane wejściowe są zgodne ze specyfikacją wejścia podaną w treści zadania i Wasze programy nie muszą sprawdzać ich poprawności.

kontakt_info@mwpz.poznan.pl     design_vorg     valid_xhtml1.0_css