Algorytmy i struktury danych, USM, zaoczne. Ćwiczenie 4.
Pliki binarne i tekstowe
Cel ćwiczenia: Wykorzystanie plików binarnych i tekstowych w programach. Operacje na plikach struktur. Zapisywanie uporządkowanych danych w pliku.
1. Zdefiniować plik binarny zawierający liczby całkowite typu int. Wczytać z klawiatury nazwę pliku. Opracować następujące funkcje:
a) zapisującą do pliku N losowych liczb całkowitych należących do przedziału [-100, 100), gdzie N – stała;
b) wyprowadzającą elementy pliku na ekran wierszami, po 12 elementów w wierszu, każdy element na czterech polach ekranu.
2. Zdefiniować plik binarny zawierający losowe struktury typu struct tosoba { char nazwisko[20]; unsigned r, m, d; long id; } Pole nazwisko należy zainicjować łańcuchem, który składa się ze słowa ”naz” zakończonego losową liczbą należącą do przedziału [1,1000). Pole r powinno zawierać rok, m - miesiąc, natomiast d - dzień miesiąca. Do pola id można wprowadzić numer kolejny struktury. Opracować następujące funkcje:
a) zapisującą do pliku losowe struktury typu tosoba;
b) wyprowadzającą zawartość pliku na ekran;
c) wyprowadzającą na ekran pozycje i zawartości wszystkich struktur o ustalonej wartości pola nazwisko;
d) usuwającą z pliku strukturę znajdującą się na określonej pozycji;
e) zapisującą do pliku struktury typu tosoba uporządkowane według nazwisk.
Przetestować opracowane funkcje w programie głównym.
3. Wprowadzić do pliku tekstowego N losowych liczb całkowitych, należących do przedziału [0,100), gdzie N – stała. Kolejne liczby powinny być oddzielone w pliku spacjami (co najmniej jedna spacja przed każdym elementem; brak spacji po ostatnim elemencie). Opracować funkcję, która przekształca zawartość pliku w sposób następujący:
jeżeli liczba x odczytana z pliku jest nieparzysta, to należy dopisać bezpośrednio za nią liczbę 2x. Na przykład dla pliku o elementach 2 3 5 4 6 7, po przekształceniu, powstanie plik 2 3 6 5 10 4 6 7 14. Wyprowadzić na ekran zawartości obu plików.
4. Zdefiniować strukturę typu struct tosoba {char nazwisko[20]; unsigned r, m, d; long id;}
oraz zmienną zawierającą nazwę pliku nazp typu char *. Opracować następujące funkcje:
a) inicjującą strukturę typu tosoba losowymi danymi;
nagłówek: void InitR(tosoba *r);
b) wyprowadzającą pola struktury typu tosoba na ekran;
nagłówek: void PiszR(tosoba *r);
c) zapisującą do pliku tekstowego losowe struktury typu tosoba oraz znaki przejścia do nowej linii (’\n’); otwarcie i zamknięcie pliku zrealizować wewnątrz funkcji;
nagłówek: void WstawR(char * nazp, int ile);
d) odczytującą z pliku tekstowego strukturę typu tosoba oraz znaki przejścia do nowej linii; nagłówek: void CzytajR(char *nazp, tosoba *r);
e) zapisującą do pliku tekstowego struktury typu tosoba uporządkowane według dat (losować dane i wpisywać do pliku na odpowiedniej pozycji; nie sortować struktur w tablicy tylko wpisywać je bezpośrednio do pliku);
nagłówek: void WstawPorzR(char *nazp, int ile);
Przetestować opracowane funkcje w programie głównym.