Algorytmy i struktury danych, USM, zaoczne. Ćwiczenie 3.
Sortowanie tablic struktur
Cel ćwiczenia: Implementacja algorytmów sortowania tablic o czasie liniowym: sortowanie przez zliczanie, sortowanie pozycyjne. Porównanie efektywności czasowej algorytmów.
Sortowanie tablicy struktur według ustalonych pól struktury.
1. Przedstawić funkcję, która realizuje algorytm sortowania przez zliczanie dla tablicy liczb całkowitych.
2. Przedstawić funkcję, która realizuje algorytm sortowania pozycyjnego dla tablicy liczb całkowitych.
3. Zdefiniować typ struct tosoba { char nazwisko[20]; unsigned r, m, d; long id; } oraz typ ttab, określający tablicę struktur typu tosoba o rozmiarze N, gdzie N – stała. W programie głównym zdefiniować tablicę tab typu ttab oraz zmienną ile typu unsigned, w której pamiętana jest liczba struktur wprowadzonych do tablicy (wartość początkowa zmiennej ile równa się 0). Opracować następujące funkcje.
a) Inicjującą pola struktury typu tosoba danymi wprowadzanymi z klawiatury (parametrem funkcji jest zmienna typu tosoba).
b) Inicjującą pola struktury typu tosoba losowymi danymi. Do pola nazwisko wpisać łańcuch ”naz” zakończony losową liczbą należącą do przedziału [0,100). Przykładowe postaci nazwisk: ”naz10”, ”naz75”, itd. Do pól r, m, d wpisać losową datę. Do pola id wpisać losową liczbę całkowitą należącą do przedziału [1,1000) (parametrem funkcji jest zmienna typu tosoba).
c) Wyprowadzającą zawartość struktury typu tosoba na ekran (parametrem funkcji jest zmienna typu tosoba).
d) Wpisującą do tablicy strukturę o losowych polach (wykorzystać funkcję z punktu b)).
Parametrami funkcji powinny być tablica i jej rozmiar oraz zmienna ile (aktualna liczba danych w tablicy). Prototyp: void Wpisz(ttab tab, unsigned N, unsigned& ile).
e) Wyprowadzającą elementy tablicy na ekran (wykorzystać funkcję z punktu c)).
f) Wyprowadzającą na ekran wszystkie elementy tablicy o ustalonej wartości pola nazwisko.
g) Usuwającą pierwszą znalezioną strukturę o podanym nazwisku i dokonującą kompresji elementów tablicy (przesunięcia elementów w tablicy).
4. Wykorzystać wybrane algorytmy do posortowania tablicy struktur typu struct tosoba { char nazwisko[20]; unsigned r, m, d; long id; } według:
a) nazwisk,
b) dat (uwzględnić równocześnie pola r, m, d),
c) nazwisk oraz identyfikatorów (w przypadku elementów z jednakowymi nazwiskami uwzględnić podczas sortowania ich identyfikatory).