Zajęcia 9 - Struktury
Deklaracja struktury i typedef
#include <stdio.h> #include <string.h> #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
osobaoraz typuDANEdo pliku nagłówkowego o nazwiebaza.h. Utwórz funkcje o nazwiewyswietl_osobe(definicję funkcji umieść w plikubaza.c). Funkcja wyświetla zawartość podanej struktury. Przetestuj działanie funkcji. - zaimplementuj funkcję
wczytaj_osobawczytującą zawartość pojedynczej strukturyosobaz 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.hzadeklaruj strukturę o nazwiezespolonezawierającą dwa pola:reiim. Następnie w plikachfmat.cifmat.hutwó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
datazawierającą trzy pola:rok,miesiącidzien(jakiego typu będą te pola?). Dodaj do strukturyosobanowe pole o nazwiedata_urodzeniatypustruct datai 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ą