You are on page 1of 2

1

Laboratorium nr 1
tablica struktur
Zdefiniuj typ strukturalny zawierajcy 3 pola (int, char, double ). Nastpnie zaimplementuj funkcje do
obsugi zdefiniowanego typu:
losowanie funkcja:
o pobiera jako argument liczb N struktur, ktre maj zostad utworzone;
o dynamicznie alokuje pamid na tablic N wskanikw na struktury;
o nastpnie alokuje kolejno N struktur, przypisujc uzyskane adresy do kolejnych komrek
utworzonej wczeniej tablicy;
o pole typu int (32 bity) jest ustawiane na wartod losow pomidzy 0 a 1 000 000; pole typu
char jest ustawiane na losow liter z zakresu A-Z; a pole typu double jest ustawiane na 0;
o funkcja zwraca adres tablicy.
kasowanie funkcja:
o pobiera wskanik na tablic struktur i jej wielkod (liczba przechowywanych wskanikw na
struktury);
o zwalniana jest najpierw kolejno pamid zajta przez wszystkie przechowywane struktury;
o nastpnie zwalniana jest rwnie pamid zajta przez sam tablic.
sortowanie funkcja:
o pobiera wskanik na tablic struktur i jej wielkod;
o elementy tablicy (wskaniki na struktury) sortowane s dowoln metod wedug pola
zawierajcego liczb int w porzdku rosncym.
zliczanie znakw funkcja:
o pobiera wskanik na tablic struktur oraz jej wielkod oraz znak do wyszukania;
o przeszukuje kolejno struktury w poszukiwaniu zadanego znaku i w przypadku jego znalezienia
zwiksza licznik wystpieo o 1.
o zwraca liczb wystpieo znaku.
Program po uruchomieniu wczytuje plik wejciowy inlab01.txt
Plik inlab01.txt zawiera w pierwszej linii kolejno liczb struktur N do wylosowania z zakresu 0 do 100000
i w drugiej linii znak X do wyszukania z zakresu A-Z
Nastpnie wywoywana jest sekwencja funkcji (dalej w funkcji main())
czas start;
losowanie N elementw;
sortowanie;
zlicz znaki X;
kasowanie;
czas stop;
Program wypisuje na konsoli czas wykonania oraz liczb wyszukanych znakw.


2

Przygotowanie e-maila do wysania:

Uwaga! Kod rdowy programu (1 plik) po oddaniu prowadzcemu zajcia laboratoryjne musi zostad
przesany na adres sdizo@zut.edu.pl :
plik z kodem rdowym musi mied nazw: loginstudenta.sdizo.lab01.main.c (np.
thyla.sdizo.lab01.main.c);
plik musi zostad wysany z poczty wydziaowej (wi.zut.edu.pl);
nagwek maila (temat) musi mied postad: SDIZO IS1 XXXY LAB01 gdzie XXXY to numer
grupy (np. SDIZO IS1 210C LAB01) ;
w pierwszych trzech liniach pliku z kodem rdowym w komentarzach musi znaled
si informacja identyczna z zamieszczon w nagwku maila plus imi i nazwisko
wysyajcego oraz adres email, z ktrego wysa wiadomod;
email nie powinien zawierad adnej treci (tylko zacznik).
Wskazwki
Pomiar czasu (wymaga time.h)
clock_t begin, end;
double time_spent;
begin = clock();

/* here, do your time-consuming job */

end = clock();
time_spent = (double)(end - begin) / CLOCKS_PER_SEC;

Wczytywanie z pliku

int N;
char X;
FILE* fp = fopen("inlab01.txt", "r");
if (fp == NULL)
return -1;
fscanf (fp, "%d %c", &N, &X);
fclose(fp);

You might also like