====== Zadania: typy złożone (struktury, unie, pola bitowe) ====== ==== 1. System zarządzania biblioteką ==== **Opis:** Napisz program, który umożliwia zarządzanie zbiorem książek w bibliotece. Program powinien pozwalać na dodawanie, usuwanie, wyszukiwanie i wyświetlanie książek. **Wymagania:** * Zdefiniuj strukturę ''Ksiazka'' zawierającą pola: ''tytuł'', ''autor'', ''rok_wydania'', ''gatunek'' (typ wyliczeniowy ''enum''). * Zdefiniuj typ wyliczeniowy ''Gatunek'' z wartościami: ''Fantasy'', ''SciFi'', ''Kryminal'', ''Romans'', ''Inne''. * Napisz funkcje: * ''dodajKsiazke()'' – dodaje książkę do tablicy struktur. * ''usunKsiazke()'' – usuwa książkę po tytule. * ''wyswietlKsiazki()'' – wyświetla wszystkie książki. * ''wyszukajKsiazke()'' – wyszukuje książkę po tytule lub autorze. * Użyj ''typedef'' do zdefiniowania aliasu dla struktury ''Ksiazka''. * Dodaj pole bitowe do struktury ''Ksiazka'', które będzie informowało, czy książka jest wypożyczona (''1'') czy dostępna (''0''). Napisz program testujący powyższe funkcje, tworzący kilka książek i wykonujący na nich różne operacje. ==== 2. Symulator konta bankowego ==== **Opis:** Napisz program symulujący proste konto bankowe, które umożliwia wpłaty, wypłaty i sprawdzanie stanu konta. **Wymagania:** * Zdefiniuj strukturę ''Konto'' zawierającą pola: * ''numer_konta'' reprezentowany przez 26 cyfr, * ''saldo'' - wartość konta (typ ''double'') * ''waluta'' - typ wyliczeniowy ''enum'' z wartościami: ''PLN'', ''EUR'', ''USD'' * ''identyfikator'' - unia zawierająca pola ''PESEL'' (11 znaków) lub ''NIP'' (10 znaków). * ''typ_identyfikatora'' - pole bitowe określające, czy identyfikatorem jest ''PESEL'' (''1'') czy ''NIP'' (''0''). * Napisz funkcje: * ''wplata()'' – zwiększa saldo konta o podaną kwotę. * ''wyplata()'' – zmniejsza saldo konta o podaną kwotę (sprawdź, czy jest wystarczająca ilość środków). * ''sprawdzSaldo()'' – wyświetla aktualne saldo. * Użyj ''typedef'' do zdefiniowania aliasu dla struktury ''Konto''. Napisz program testujący powyższe funkcje, tworzący konto bankowe i wykonujący na nim kilka operacji. ==== 3. System zarządzania studentami ==== **Opis:** Napisz program, który umożliwia zarządzanie danymi studentów na uczelni. **Wymagania:** * Zdefiniuj strukturę ''Student'' zawierającą pola: * ''imie'' - łańcuch znakowy, * ''nazwisko'' - łańcuch znakowy, * ''nr_indeksu'' - numer indeksu (typ ''int''), * ''rok_studiow'' - typ wyliczeniowy ''enum'' z wartościami: ''Pierwszy'', ''Drugi'', ''Trzeci'', ''Czwarty'', ''Piaty''. * ''tryb_studiow'' - pole bitowe określające, czy student jest na studiach stacjonarnych (''1'') czy niestacjonarnych (''0''), * Użyj ''typedef'' do zdefiniowania aliasu dla struktury ''Student''. * Napisz funkcje: * ''dodajStudenta()'' – dodaje studenta do tablicy struktur. * ''usunStudenta()'' – usuwa studenta po numerze indeksu. * ''wyswietlStudentow()'' – wyświetla listę studentów. * ''znajdzStudenta()'' – wyszukuje studenta po numerze indeksu. Napisz program testujący powyższe funkcje, tworzący kilka rekordów studentów i wykonujący na nich różne operacje. ==== 4. System czujników ==== **Opis:** Napisz program do zarządzania odczytami z różnych czujników środowiskowych (temperatura, wilgotność, ciśnienie). **Wymagania:** * odczyty z różnych czujników (temperatura, wilgotność, ciśnienie) przechowywane są w jednej strukturze zawierającej nastepujace pola: * nazwa czujnika (łańcuch znakowy), * typ czujnika - typ wyliczeniowy z wartościami: ''TEMPERATURA'', ''WILGOTNOSC'', ''CISNIENIE'', * wartość odczytu - unia umożliwiająca przechowywać różne typy danych w zależności od typu czujnika: * dla czujnika temperatury: wartość typu ''float'' (np. 23.5 °C), * dla czujnika wilgotności: wartość typu ''unsigned int'' (np. 65%), * dla czujnika ciśnienia: wartość typu ''unsigned int'' (np. 1013 hPa), * Napisz funkcje: * ''wyswietlOdczyt()'' – wyświetla odczyt pomiaru w zależności od typu czujnika. * ''przeliczTemperature()'' – przelicza temperaturę z Celsjusza na Fahrenheity. * Użyj ''typedef'' do zdefiniowania aliasu dla struktury czujnika. * Uzyj pola bitowego lub typu ''enum'' do okreslenia jednostki temperatury (Celsjusz/Fahrenheit). Napisz program testujący powyższe funkcje, tworzący kilka odczytów z różnych czujników i wyświetlający je.