Wstęp do programowania/Pliki/Ćwiczenia: Różnice pomiędzy wersjami
→Zadanie 3 (Usuwanie komentarzy): character:=char |
|||
Linia 13: | Linia 13: | ||
Napisz funkcję sprawdzającą, czy dwa pliki tekstowe o podanych nazwach mają tę samą liczbę wierszy. | Napisz funkcję sprawdzającą, czy dwa pliki tekstowe o podanych nazwach mają tę samą liczbę wierszy. | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | |||
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka 1</span> | |||
<div class="mw-collapsible-content" style="display:none"> | |||
Najprostsze rozwiązanie polega na policzeniu liczby wierszy w jednym i drugim pliku, a potem porównaniu tych liczb. | Najprostsze rozwiązanie polega na policzeniu liczby wierszy w jednym i drugim pliku, a potem porównaniu tych liczb. | ||
</div> | </div> | ||
</div> | </div> | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | |||
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie 1</span> | |||
<div class="mw-collapsible-content" style="display:none"> | |||
'''function''' LiczWiersze(f:Text):integer; | '''function''' LiczWiersze(f:Text):integer; | ||
// f otwarty plik tekstowy | // f otwarty plik tekstowy | ||
Linia 48: | Linia 52: | ||
Zaletą tego rozwiązania jest możliwość powtórnego wykorzystania funkcji LiczWiersze do innych celów, a wadą konieczność czytania obu plików, nawet gdy jeden jest bardzo mały, a drugi bardzo duży. | Zaletą tego rozwiązania jest możliwość powtórnego wykorzystania funkcji LiczWiersze do innych celów, a wadą konieczność czytania obu plików, nawet gdy jeden jest bardzo mały, a drugi bardzo duży. | ||
</div> | </div> | ||
</div> | </div> | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | |||
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka 2</span> | |||
<div class="mw-collapsible-content" style="display:none"> | |||
Można też wczytywać po jednym wierszu z każdego pliku, aż któryś z nich się nie skończy. | Można też wczytywać po jednym wierszu z każdego pliku, aż któryś z nich się nie skończy. | ||
</div> | </div> | ||
</div> | </div> | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | |||
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie 2</span> | |||
<div class="mw-collapsible-content" style="display:none"> | |||
'''function''' RownoWierszowe2(s1,s2:string):Boolean; //s1,s2, to ścieżki dostępu do plików f1 i f2 | '''function''' RownoWierszowe2(s1,s2:string):Boolean; //s1,s2, to ścieżki dostępu do plików f1 i f2 | ||
'''var''' f1,f2:Text; | '''var''' f1,f2:Text; | ||
Linia 75: | Linia 84: | ||
Czytamy po jednym wierszu z każdego pliku, aż co najmniej jeden z nich się skończy. Jeśli okazało się, że skończyły się oba naraz - mają tę samą liczbę wierszy. Jeśli skończył się tylko jeden - ten drugi musi być dłuższy. | Czytamy po jednym wierszu z każdego pliku, aż co najmniej jeden z nich się skończy. Jeśli okazało się, że skończyły się oba naraz - mają tę samą liczbę wierszy. Jeśli skończył się tylko jeden - ten drugi musi być dłuższy. | ||
</div> | </div> | ||
</div> | </div> | ||
==Zadanie 2== | ==Zadanie 2== |
Wersja z 16:02, 28 maj 2020
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