====== Struktury ===== ===== Deklaracja struktury i typedef ===== #include #include #define MAX 256 // deklaracja typu struct osoba struct osoba { char nazwisko[MAX]; char imie[MAX]; int wiek; }; typedef struct osoba DANE; int main() { struct osoba agent; DANE student; struct osoba *wsk; strcpy(agent.nazwisko,"Bond"); strcpy(agent.imie,"James"); agent.wiek = 33; strcpy(student.nazwisko,"Kowalski"); strcpy(student.imie,"Jan"); student.wiek = 21; printf("Imie %s\nNazwisko %s\nWiek %d\n\n",agent.imie,agent.nazwisko,agent.wiek); printf("Imie %s\nNazwisko %s\nWiek %d\n\n",student.imie,student.nazwisko,student.wiek); wsk = &agent; strcpy((*wsk).nazwisko,"Kloss"); strcpy(wsk->imie,"Hans"); wsk->wiek--; printf("Imie %s\nNazwisko %s\nWiek %d\n\n",agent.imie,agent.nazwisko,agent.wiek); } Ćwiczenia: * przenieś deklarację struktury ''osoba'' oraz typu ''DANE'' do pliku nagłówkowego o nazwie **''baza.h''**. Utwórz funkcje o nazwie **''wyswietl_osobe''** (definicję funkcji umieść w pliku **''baza.c''**). Funkcja wyświetla zawartość podanej struktury. Przetestuj działanie funkcji. * zaimplementuj funkcję ''**wczytaj_osoba**'' wczytującą zawartość pojedynczej struktury ''osoba'' z klawiatury. * zaimplementuj prostą bazę danych osobowych. Struktury zawierające dane przechowuj w odpowiedniej tablicy. Dla uproszczenia zakładamy, że maksymalna ilość wpisów nie przekroczy 1000. * zaimplementuj funkcją która wyszuka w tak stworzonej bazie osobę wg. zadanego wzorca. Szukany wzorzec może pojawić się w nazwisku lub imieniu. Funkcja powinna zwrócić pierwszy pasujący rekord. * w pliku ''**fmat.h**'' zadeklaruj strukturę o nazwie ''**zespolone**'' zawierającą dwa pola: **''re''** i ''**im**''. Następnie w plikach ''**fmat.c**'' i ''**fmat.h**'' utwórz następujące funkcje: ''**dodawanie**'' - funkcja dodaje dwie liczby zespolone, ''**iloczyn**'' - funkcja oblicza iloczyn dwóch liczb zespolonych, ''**modul**'' - funkcja zwraca modul liczby zespolonej, ''**argument**'' - funkcja zwraca argument funkcji zespolonej. Przetestuj te funkcje w przykładowym programie. ===== Zadania domowe ===== * zaimplementuj w programie z zajęć (baza danych osobowych) możliwość sortowania wpisów w kolejności alfabetycznej * dodaj do programu z poprzedniego zadania menu z możliwością wyboru następujących akcji: dodaj wpis, usuń wpis o podanym numerze, wyświetl wszystkie wpisy w kolejności alfabetycznej, zamknij program. * stwórz nową strukturę o nazwie ''**data**'' zawierającą trzy pola: ''rok'', ''miesiąc'' i ''dzien'' (jakiego typu będą te pola?). Dodaj do struktury ''**osoba**'' nowe pole o nazwie ''**data_urodzenia**'' typu ''**struct data**'' i uzupełnij działanie programu z zajęć tak aby umożliwiał wprowadzanie i poprawne wyświetlanie wpisów zawierających datę urodzenia podanej osoby. * przekształć bazę danych osobowych z poprzednich zajęć tak aby tablica zawierająca struktury była przydzielana dynamicznie. Na tworzymy bazę mogącą pomieścić 10 wpisów a przypadku gdy tablica zostanie całkowicie wypełniona zwiększamy jej rozmiar dwukrotnie (za pomocą funkcji realloc) * zimplementuj prostą baze danych osobowych w oparciu o listę jednokierunkową