Laboratorium Informatyki Ćwiczenie 10.
Rekordy i tablice rekordów
Cel ćwiczenia: Definiowanie zmiennych rekordowych. Deklarowanie i definiowanie tablic rekordów. Inicjowanie rekordów wartościami początkowymi. Wykonywanie operacji
na tablicach rekordów.
1. Zdefiniować typ rekordowy type tosoba = record naz: string[20]; rok, mies, dzien: word;
id: longint; end; oraz zmienną rekordową stud typu tosoba, zainicjowaną wartościami początkowymi w programie.
a) Opracować procedurę inicjującą pola rekordu typu tosoba danymi wprowadzanymi z klawiatury. Nagłówek procedury: procedure InitKlw(Var r: tosoba).
b) Opracować procedurę inicjującą pola rekordu typu tosoba losowymi danymi. Do pola naz wpisać łańcuch ‘naz’ zakończony losową liczbą należącą do przedziału [0,100) (wykorzystać funkcję str). Przykładowe zawartości pola naz: ‘naz10’, ‘naz23’, itd. Do pola rok wpisać losową liczbę całkowitą należącą do przedziału [1900, 1981). Do pola mies wpisać losową liczbę całkowitą należącą do przedziału [1, 13), natomiast do pola dzien losową liczbę należącą do przedziału [1, 32). Pole id powinno zawierać losową liczbę całkowitą należącą do przedziału [1, 100).
c) Opracować procedurę wyprowadzającą zawartość rekordu typu tosoba na ekran.
2. Zdefiniować typ rekordowy tosoba, analogicznie jak w poprzednim zadaniu, oraz typ ttab określający tablicę rekordów typu tosoba o rozmiarze N, gdzie N – stała. W programie głównym zdefiniować tablicę tab typu ttab oraz zmienną ile typu word, w której przechowywana jest liczba rekordów wprowadzonych do tablicy (wartość początkowa zmiennej ile wynosi 0). Opracować następujące procedury.
a) Wstawiającą do tablicy rekord o losowych polach (wykorzystać procedurę z zadania 1).
Nagłówek procedury: procedure Wstaw(Var tab: ttab; Var ile: word).
b) Wyprowadzającą na ekran k <= ile elementów tablicy (licząc od elementu pierwszego).
c) Wyprowadzającą na ekran rekordy o ustalonym nazwisku.
d) Usuwającą pierwszy znaleziony rekord o podanym nazwisku i dokonującą kompresji tablicy.
e) Usuwającą pierwszy znaleziony rekord o podanym nazwisku poprzez wpisanie na jego miejsce elementu z ostatniej pozycji w tablicy.
3. Niech dana będzie tablica rekordów typu tosoba zdefiniowana w zadaniu 2. Opracować następujące procedury.
a) Wyprowadzającą na ekran rekordy, dla których daty należą do przedziału [x, y], gdzie x jest datą początkową, natomiast y datą końcową.
b) Sortującą elementy tablicy według nazwisk.
c) Sortującą elementy tablicy według nazwisk i dat.
d) Sortującą elementy tablicy według nazwisk, dat oraz identyfikatorów.
Przetestować opracowane procedury.