Witam. Mam do napisania program, oto treść 'zadania' :
Zdefiniuj typ strukturalny zawierający 3 pola (int, char, double ). Następnie zaimplementuj funkcje do
obsługi zdefiniowanego typu:
1. losowanie – funkcja:
a) pobiera jako argument liczbę N struktur, które mają zostad utworzone;
b) dynamicznie alokuje pamięć na tablicę N wskaźników na struktury;
c) następnie alokuje kolejno N struktur, przypisując uzyskane adresy do kolejnych komórek
utworzonej wcześniej tablicy;
d) pole typu int (32 bity) jest ustawiane na wartośd losową pomiędzy 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;
e) funkcja zwraca adres tablicy.
2. kasowanie – funkcja:
a) pobiera wskaźnik na tablicę struktur i jej wielkość (liczba przechowywanych wskaźników na
struktury);
b) zwalniana jest najpierw kolejno pamięć zajęta przez wszystkie przechowywane struktury;
c) następnie zwalniana jest również pamięć zajęta przez samą tablicę.
3. sortowanie – funkcja:
a) pobiera wskaźnik na tablicę struktur i jej wielkośd;
b) elementy tablicy (wskaźniki na struktury) sortowane są dowolną metodą według pola
zawierającego liczbę int w porządku rosnącym.
4. zliczanie znaków – funkcja:
a) pobiera wskaźnik na tablicę struktur oraz jej wielkośd oraz znak do wyszukania;
b) przeszukuje kolejno struktury w poszukiwaniu zadanego znaku i w przypadku jego znalezienia
zwiększa licznik wystąpieo o 1.
c) zwraca liczbę wystąpień znaku.
Program po uruchomieniu wczytuje plik wejściowy 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
Następnie wywoływana jest sekwencja funkcji (dalej w funkcji main())
1. czas start;
2. losowanie N elementów;
3. sortowanie;
4. zlicz znaki X;
5. kasowanie;
6. czas stop;
Program wypisuje na konsoli czas wykonania oraz liczbę wyszukanych znaków.
Dołączam kod. Przy kompilacji nie ma żadnych błędów. natomiast przy próbie uruchomienia programu wyskakuje błąd: _BLOCK_TYPE_IS_VALID ( pHEAD->nBlockUse) i program nie działa. Chyba jest to coś zwiazanego z jakimś wyciekiem pamięci, czy czymś podobnym w funkcji kasowanie, ale ja nic nie dostrzegam. Proszę o pomoc.
Zdefiniuj typ strukturalny zawierający 3 pola (int, char, double ). Następnie zaimplementuj funkcje do
obsługi zdefiniowanego typu:
1. losowanie – funkcja:
a) pobiera jako argument liczbę N struktur, które mają zostad utworzone;
b) dynamicznie alokuje pamięć na tablicę N wskaźników na struktury;
c) następnie alokuje kolejno N struktur, przypisując uzyskane adresy do kolejnych komórek
utworzonej wcześniej tablicy;
d) pole typu int (32 bity) jest ustawiane na wartośd losową pomiędzy 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;
e) funkcja zwraca adres tablicy.
2. kasowanie – funkcja:
a) pobiera wskaźnik na tablicę struktur i jej wielkość (liczba przechowywanych wskaźników na
struktury);
b) zwalniana jest najpierw kolejno pamięć zajęta przez wszystkie przechowywane struktury;
c) następnie zwalniana jest również pamięć zajęta przez samą tablicę.
3. sortowanie – funkcja:
a) pobiera wskaźnik na tablicę struktur i jej wielkośd;
b) elementy tablicy (wskaźniki na struktury) sortowane są dowolną metodą według pola
zawierającego liczbę int w porządku rosnącym.
4. zliczanie znaków – funkcja:
a) pobiera wskaźnik na tablicę struktur oraz jej wielkośd oraz znak do wyszukania;
b) przeszukuje kolejno struktury w poszukiwaniu zadanego znaku i w przypadku jego znalezienia
zwiększa licznik wystąpieo o 1.
c) zwraca liczbę wystąpień znaku.
Program po uruchomieniu wczytuje plik wejściowy 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
Następnie wywoływana jest sekwencja funkcji (dalej w funkcji main())
1. czas start;
2. losowanie N elementów;
3. sortowanie;
4. zlicz znaki X;
5. kasowanie;
6. czas stop;
Program wypisuje na konsoli czas wykonania oraz liczbę wyszukanych znaków.
Dołączam kod. Przy kompilacji nie ma żadnych błędów. natomiast przy próbie uruchomienia programu wyskakuje błąd: _BLOCK_TYPE_IS_VALID ( pHEAD->nBlockUse) i program nie działa. Chyba jest to coś zwiazanego z jakimś wyciekiem pamięci, czy czymś podobnym w funkcji kasowanie, ale ja nic nie dostrzegam. Proszę o pomoc.
Code: cpp