• Nie Znaleziono Wyników

Informatyka 1. INF & EIT.

N/A
N/A
Protected

Academic year: 2021

Share "Informatyka 1. INF & EIT."

Copied!
2
0
0

Pełen tekst

(1)

Informatyka 1. INF & EIT. Ćwiczenie 13.

Pliki tekstowe i binarne Zagadnienia:

standardowe wejście i wyjście w trybie tekstowym i binarnym; zapis i odczyt danych znakowych, łańcuchowych i liczbowych w postaci tekstowej; operacje na plikach tekstowych;

zapis i odczyt danych w postaci binarnej; operacje na plikach binarnych.

1. Wykorzystując funkcję fprintf zapisać do pliku dane typu int, char, float oraz daną typu łańcuchowego w wybranym formacie (np. %5d%3c%8.2f%10s; dla danych 23, ’A’, 234.57, ”Ala_Ola” w pliku fizycznym zapisane zostaną (∇ – symbol spacji)

∇∇∇23∇∇A∇∇234.57∇∇∇Ala_Ola). Odczytać wprowadzone dane za pomocą funkcji fscanf. Należy pamiętać, że podczas odczytu, dla wszystkich formatów oprócz %c, przed zinterpretowaniem są pomijane spacje. W celu pominięcia zbędnych spacji można wykorzystać format %*[∇]%c lub umieścić spację w formacie, tj. napisać ”∇%c”.

2. Dany jest plik tekstowy zawierający liczby rzeczywiste typu double zapisane w formacie z dwoma miejscami po przecinku i rozdzielone spacjami. Napisać program, który:

• zliczy liczbę danych w pliku, czytając dane z pliku aż do napotkania końca pliku lub do pierwszego nieudanego odczytu;

• przewinie plik na początek;

• dokona dynamicznej alokacji tablicy typu double, która pomieści wszystkie dane z pliku;

• wczyta dane z pliku do utworzonej tablicy;

• zamknie plik;

• wyprowadzi dane z tablicy na ekran.

Przed zakończeniem programu zwolnić zaalokowaną pamięć.

3. Zdefiniować typ tdana, np. typedef double tdana. Opracować program, który zapisze do pliku binarnego dane w formacie: rozmiar danej typu tdana (zmienna typu unsigned), liczba danych w pliku (zmienna typu long), ciąg danych typu tdana zapisywanych do pliku, a następnie odczyta dane z pliku i wyprowadzi na ekran.

4. Opracować program, który na podstawie rozmiaru pliku binarnego określi ile zawiera on liczb typu long, a następnie utworzy dynamiczną tablicę liczb typu long i wczyta do niej zawartość pliku. Wyprowadzić zawartość tablicy na ekran. Przed zakończeniem programu zwolnić pamięć. Uwaga: rozmiar pliku można określić za pomocą funkcji ftell.

5. W pliku tekstowym p1.txt znajduje się K liczb całkowitych rozdzielonych spacjami i posortowanych rosnąco. W pliku tekstowym p2.txt znajduje się N liczb całkowitych rozdzielonych spacjami i posortowanych rosnąco. Opracować funkcję, która realizuje algorytm sortowania przez łączenie:

a) otwiera pliki p1.dat i p2.dat;

b) odczytuje pierwszą liczbę z pliku p1 i pliku p2;

c) porównuje odczytane liczby i mniejszą z nich zapisuje do pliku p3.dat;

d) powtarza operacje odczytu i porównywania danych, aż do wyczerpania danych w obu plikach.

Na przykład dla plików p1 i p2, zawierających elementy 2, 4, 5, 7 (plik p1) oraz 3, 6, 9 (plik p2), przedstawiona procedura tworzy plik p3, który zawiera 2, 3, 4, 5, 6, 7, 9.

(2)

6. Zdefiniować typ strukturalny typu tosoba postaci struct { char naz[20]; long id; } oraz zmienną char *nazwa, zawierającą nazwę pliku. Opracować następujące funkcje obsługu- jące plik tekstowy złożony ze zmiennych strukturalnych typu tosoba:

a) inicjującą zmienną typu tosoba losowymi wartościami;

prototyp: void Inicjuj(tosoba& r);

b) wyprowadzającą zawartość zmiennej typu tosoba na ekran;

prototyp: void Pisz(tosoba *r);

c) dopisującą zmienną typu tosoba na końcu pliku o podanej nazwie;

prototyp: void Fdopisz(char *nazwa, const tosoba *r);

d) odczytującą daną z zadanej pozycji w pliku o podanej nazwie i zapisującą wynik do zmiennej r; prototyp: void Fczytaj (char *nazwa, long poz, tosoba& r);

e) wstawiającą, pomiędzy istniejące dane, nową daną na zadanej pozycji w pliku o podanej nazwie; void Fwstaw (char *nazwa, long poz, const tosoba *r);

f) usuwającą element z zadanej pozycji w pliku i zapisującą daną do r;

void Fusun (char *nazwa, long poz, tosoba& r).

Przetestować opracowane funkcje w programie.

Cytaty

Powiązane dokumenty

5) Przechodzi do stanu waitForSearchResults po otrzymaniu komunikatu receive(announce(task,.cost),mgr) od zadania roli mgr:Manager i wysłaniu do niej komunikatu

Należy zdefiniować typ Max definiując typ struktury zawierającej wszystkie dane niezbędne do realizacji definiowanego ATD za pomocą listy wiązanej

Opracować funkcje inicjujące tablicę double tab[nw][nk] (nw, nk - stałe) liczbami rzeczywistymi (wiersz nw=0 - zerami, wiersz nw=1 - jedynkami, ..., wiersz j < nw - liczbami

a) funkcji alokacji pamięci malloc, b) operatora new. Zainicjować tablicę losowymi liczbami całkowitymi należącymi do zbioru {-1, 0, 1}. Wyprowadzić zawartość tablicy na

Zdefiniować wskaźnik funkcji double f(double). Zainicjować wskaźnik adresem standar- dowej funkcji sin. Za pomocą wskaźnika wyznaczyć wartości funkcji sin w N losowych punktach

Opracować program umożliwiający przekazanie do programu trzech liczb typu int za pomocą argumentów funkcji main(int argc, char *argv[]), gdzie argc – liczba

Nie zmieniając zawartości tablicy struktur i nie kopiując jej do innej tablicy zmodyfi- kować tablicę indeksów w taki sposób, aby kolejne pozycje w tablicy ind określały

Opracować program, który zapisze do pliku binarnego dane w formacie: rozmiar danej typu tdana (zmienna typu unsigned), liczba danych w pliku (zmienna typu long), ciąg danych