Wstęp do programowania/Pliki/Ćwiczenia: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Aneczka (dyskusja | edycje)
Aneczka (dyskusja | edycje)
Linia 91: Linia 91:
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.
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.


<div class="mw-collapsible mw-made=collapsible mw-collapsed">
{{wskazowka| 1||<div class="mw-collapsible mw-made=collapsible mw-collapsed"><div class="mw-collapsible-content" style="display:none">
'''Wskazówka 1'''
<div class="mw-collapsible-content" style="display:none">
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?  
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>}}


<div class="mw-collapsible mw-made=collapsible mw-collapsed">
{{rozwiazanie| 1||<div class="mw-collapsible mw-made=collapsible mw-collapsed"><div class="mw-collapsible-content" style="display:none">
'''Rozwiązanie 1'''
<div class="mw-collapsible-content" style="display:none">
  '''procedure''' Kopiuj('''var''' f,g:Text);
  '''procedure''' Kopiuj('''var''' f,g:Text);
  '''type''' pozycja=(odstep,slowo);
  '''type''' pozycja=(odstep,slowo);
Linia 140: Linia 136:
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ę.
</div>
</div>
</div>
</div>}}


<div class="mw-collapsible mw-made=collapsible mw-collapsed">
{{rozwiazanie| 2||<div class="mw-collapsible mw-made=collapsible mw-collapsed"><div class="mw-collapsible-content" style="display:none">
'''Rozwiązanie 2'''
<div class="mw-collapsible-content" style="display:none">
  '''procedure''' Kopiuj('''var''' f,g:Text);
  '''procedure''' Kopiuj('''var''' f,g:Text);
  '''type''' pozycja=(odstep,slowo);
  '''type''' pozycja=(odstep,slowo);
Linia 182: Linia 176:
W tym rozwiązaniu jest tylko jedna pętla while przetwarzająca poszczególne ''zdarzenia'' w pliku f. Zdarzeniem może być albo koniec linii, albo wczytanie znaku. Za każdym razem wykonywane są odpowiednie operacje na plikach i zmieniany jest stan.
W tym rozwiązaniu jest tylko jedna pętla while przetwarzająca poszczególne ''zdarzenia'' w pliku f. Zdarzeniem może być albo koniec linii, albo wczytanie znaku. Za każdym razem wykonywane są odpowiednie operacje na plikach i zmieniany jest stan.
</div>
</div>
</div>
</div>}}


==Zadanie 3 (Usuwanie komentarzy)==
==Zadanie 3 (Usuwanie komentarzy)==

Wersja z 12:13, 1 sie 2006

<<< Powrót do głównej strony wykładu

<<< Powrót do modułu 7

To są zadania na pliki.

Pokaż rozwiązania __SHOWALL__
Ukryj 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

{{{3}}}

Rozwiązanie 1

{{{3}}}

Wskazówka 2

{{{3}}}

Rozwiązanie 2

{{{3}}}

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

{{{3}}}

Rozwiązanie 1

{{{3}}}

Rozwiązanie 2

{{{3}}}

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