Wstęp do programowania/Pliki/Ćwiczenia: Różnice pomiędzy wersjami
m |
|||
Linia 88: | Linia 88: | ||
{{wskazowka| 1||<div class="mw-collapsible mw-made=collapsible mw-collapsed"><div class="mw-collapsible-content" style="display:none"> | {{wskazowka| 1||<div class="mw-collapsible mw-made=collapsible mw-collapsed"><div class="mw-collapsible-content" style="display:none"> | ||
− | Użyj specjalnej zmiennej do pamiętania | + | Użyj specjalnej zmiennej do pamiętania czy przetwarzamy właśnie wnętrze słowa, czy odstęp między słowami. Co należy zrobić, jak przeczytamy odstęp, znak końca wiersza lub inny znak, w każdej z tych sytuacji? |
</div> | </div> | ||
</div>}} | </div>}} | ||
Linia 128: | Linia 128: | ||
Ta procedura ma klasyczną strukturę procedur przetwarzających pliki tekstowe: zewnętrzna pętla while wykonuje jeden obrót na każdą linię pliku f, a wewnętrzna na każdy znak wewnątrz linii. | Ta procedura ma klasyczną strukturę procedur przetwarzających pliki tekstowe: zewnętrzna pętla while wykonuje jeden obrót na każdą linię pliku f, a wewnętrzna na każdy znak wewnątrz linii. | ||
− | W procedurze wykorzystana jest zmienna 'stan', która wskazuje, czy przetwarzamy w danym momencie słowo | + | W procedurze wykorzystana jest zmienna 'stan', która wskazuje, czy przetwarzamy w danym momencie słowo czy znaki (spacje i zmiany linii) pomiędzy słowami. |
Przetwarzanie każdej nowej linii pliku f rozpoczyna się w stanie 'odstęp'. Zmiana tego stanu na 'słowo' nastąpi po przeczytaniu pierwszego znaku, który nie jest odstępem. Powtórna zmiana na 'odstęp' nastąpi po przeczytaniu znaku odstępu wewnątrz linii lub kiedy przetwarzana linia zakończy się. | Przetwarzanie każdej nowej linii pliku f rozpoczyna się w stanie 'odstęp'. Zmiana tego stanu na 'słowo' nastąpi po przeczytaniu pierwszego znaku, który nie jest odstępem. Powtórna zmiana na 'odstęp' nastąpi po przeczytaniu znaku odstępu wewnątrz linii lub kiedy przetwarzana linia zakończy się. |
Wersja z 22:33, 15 lis 2006
To są zadania na pliki.
Oglądaj wskazówki i rozwiązania __SHOWALL__
Ukryj wskazówki i rozwiązania __HIDEALL__
W poniższych zadaniach zakładamy, że eof(f) implikuje eoln(f).
Zadanie 1
Napisz funkcję sprawdzającą, czy dwa pliki tekstowe o podanych nazwach mają tę samą liczbę wierszy.
Wskazówka 1
Rozwiązanie 1
Wskazówka 2
Rozwiązanie 2
Zadanie 2
Napisz procedurę, która skopiuje plik tekstowy f na g, modyfikując go w następujący sposób: bezpośrednio po każdym słowie należy wstawić koniec wiersza, a nowy wiersz rozpocząć od nowego słowa (spacje i puste wiersze należy pomijać).
Słowem (w tym zadaniu) nazywamy dowolny maksymalny spójny ciąg znaków niezawierający spacji i znaków końca wiersza. Nie zakładamy niczego o długości słów.
Wskazówka 1
Rozwiązanie 1
Rozwiązanie 2
Zadanie 3 (Usuwanie komentarzy)
Napisz procedurę usuwającą komentarze z pliku tekstowego zawierającego program w Pascalu.
Komentarze oznaczone są przez { ... } lub (* ... *). Należy przy tym uważać, by nie usuwać komentarzy znajdujących się wewnątrz napisów (oznaczonych przez ' ... ')
Wskazówka 1
Rozwiązanie 1