13 Złożone typy danych
W poniższych zadaniach o ile nie zaznaczono inaczej pojęcia nazwa i alias struktury można używać zamiennie.
Zdefiniuj strukturę
Carz polami:brand(napis),model(tablica znaków o rozmiarze 20),year(liczba całkowita) iisAvailable(wartość 0 lub 1), która reprezentuje informację o dostępności samochodu na sprzedaż. Wmainstwórz kilka zmiennych w typieCar.Utwórz strukturę
Student, która zawiera:firstName(łańcuch znaków),lastName(łańcuch znaków),id(liczba całkowita) orazgpa(liczba zmiennoprzecinkowa), reprezentującą średnią ocen studenta. Wmainstwórz trzy zmienne w typieStudent. Następnie z tych trzech zmiennych stwórz tablicę.Zaplanuj strukturę
Rectangle, mającą pola:width(liczba zmiennoprzecinkowa),height(liczba zmiennoprzecinkowa) icolor(łańcuch znaków), która ma służyć do przechowywania informacji o wymiarach i kolorze prostokąta. Wmainstwórz 4-elementową tablicę zmiennych typuRectangle.Stwórz strukturę
WeatherInfozawierającą:temperature(liczba zmiennoprzecinkowa),humidity(liczba zmiennoprzecinkowa) iwindSpeed(liczba zmiennoprzecinkowa), która będzie używana do przechowywania danych meteorologicznych. Wmainstwórz kilka zmiennych w typieWeatherInfo.Zaprojektuj strukturę
Bookz polami:title(łańcuch znaków),author(łańcuch znaków),publishedYear(liczba całkowita) ipages(liczba całkowita), która ma opisywać podstawowe informacje o książce. Wmainstwórz 5-elementową tablicę zmiennych typuBook.Napisz strukturę
Personz polaminame(tablica znaków długości 20) orazage(typuint). Następnie napisz funkcje i wywołają każdą z nich co najmniej jeden raz:
initPerson- funkcja przyjmuje dwa argumentem imię i wiek i zwraca wskaźnik na nowo-utworzoną strukturę ustawiającą składowe z przekazanych argumentów.showPerson- funkcja, której argumentem jest zmienna w typiePerson. Funkcja ma wypisać opis przekazanego argumentu (wpisać wiek i imię na standardowym wyjściu).birthday- funkcja, której argumentem jest wskaźnik do struktury typuPerson. Funkcja ma powiększyć wiek o 1 w przekazanym argumencie.
Stwórz przypadek testowy dla każdej z funkcji.
- Napisz strukturę
Carz polamibrand(tablica znaków długości 20) orazmileage(typuint). Następnie napisz funkcje i wywołaj każdą z nich co najmniej jeden raz:
initCar- funkcja przyjmuje dwa argumenty: markę i przebieg, i zwraca nowo-utworzoną strukturę ustawiającą składowe z przekazanych argumentów.showCar- funkcja, której argumentem jest zmienna w typieCar. Funkcja ma wypisać opis przekazanego argumentu (wypisać markę i przebieg na standardowym wyjściu).mileageService- funkcja, której argumentem jest wskaźnik do struktury typuCar. Funkcja ma dodać 10000 do przebiegu w przekazanym argumencie.
Stwórz przypadek testowy dla każdej z funkcji.
- Napisz strukturę
Bookz polamititle(tablica znaków długości 50) orazpage_count(typuint). Następnie napisz funkcje i wywołaj każdą z nich co najmniej jeden raz:
initBook- funkcja przyjmuje dwa argumenty: tytuł i liczbę stron, i zwraca nowo-utworzoną strukturę ustawiającą składowe z przekazanych argumentów.showBook- funkcja, której argumentem jest zmienna w typieBook. Funkcja ma wypisać opis przekazanego argumentu (wypisać tytuł i liczbę stron na standardowym wyjściu).addPages- funkcja, której argumentem jest wskaźnik do struktury typuBook. Funkcja ma dodać 10 do liczby stron w przekazanym argumencie.
Stwórz przypadek testowy dla każdej z funkcji.
- Napisz strukturę
Laptopz polamimodel(tablica znaków długości 30) orazprice(typufloat). Następnie napisz funkcje i wywołaj każdą z nich co najmniej jeden raz:
initLaptop- funkcja przyjmuje dwa argumenty: model i cenę, i zwraca nowo-utworzoną strukturę ustawiającą składowe z przekazanych argumentów.showLaptop- funkcja, której argumentem jest zmienna w typieLaptop. Funkcja ma wypisać opis przekazanego argumentu (wypisać model i cenę na standardowym wyjściu).reducePrice- funkcja, której argumentem jest wskaźnik do struktury typuLaptop. Funkcja ma obniżyć cenę o 5% w przekazanym argumencie.
Stwórz przypadek testowy dla każdej z funkcji.
Stwórz strukturę
Airplaneo dwóch polachmodel(napis) oraznumber_of_engines(dowolny typ całkowity). Następnie stwórz funkcję, której argumentami jest niepusta tablica strukturAirplaneoraz rozmiar tablicy. Funkcja ma zwrócić najmniejszą liczbę silników. Stwórz przypadek testowy.Stwórz strukturę
Computero dwóch polachbrand(napis) oraznumber_of_cores(dowolny typ całkowity). Następnie stwórz funkcję, której argumentami jest niepusta tablica strukturComputeroraz rozmiar tablicy. Funkcja ma zwrócić największą liczbę rdzeni. Stwórz przypadek testowy.Stwórz strukturę
Booko dwóch polach:title(napis) ipage_count(int). Następnie stwórz funkcję, której argumentami jest niepusta tablica strukturBookoraz rozmiar tablicy. Funkcja ma zwrócić książkę (jako strukturę) z największą liczbę stron. W przypadku kilku książek w tablicy z największą liczbą stron, to zwróć ostatnią z możliwych. Stwórz przypadek testowy.Napisz strukturę
Carz polamibrand(tablica znaków długości 50) orazmileage(typuint). Następnie napisz dwie funkcje i wywołaj każdą z nich co najmniej jeden raz:
initCar- funkcja przyjmuje dwa argumenty: markę i przebieg, i zwraca wskaźnik na nowo utworzoną strukturę, ustawiając składowe z przekazanych argumentów. Dodatkowo funkcja powinna sprawdzić, aby marka była napisem długości co najmniej 2 i przebieg był większy niż 0. W przypadku nie spełnienia co najmniej jednego z warunków, funkcja powinna zwracać NULL.increaseMileage- funkcja, której argumentem jest wskaźnik do struktury typuCar. Funkcja ma dodać 1000 do przebiegu w przekazanym argumencie.
Upewnij się, że drugą funkcję możesz wywołać w main.
- Napisz strukturę
Bikez polamimodel(tablica znaków długości 40) orazdistance_travelled(typuint). Następnie napisz dwie funkcje i wywołaj każdą z nich co najmniej jeden raz:
initBike- funkcja przyjmuje dwa argumenty: model roweru i odległość przejechaną, i zwraca wskaźnik na nowo utworzoną strukturę, ustawiając wartości zgodnie z przekazanymi argumentami. Funkcja powinna dodatkowo sprawdzać, czy model jest napisem o długości co najmniej 3 i odległość przejechana jest większa od 0. W przypadku nie spełnienia co najmniej jednego z warunków, funkcja powinna zwracać NULL.increaseDistance- funkcja, której argumentem jest wskaźnik do strukturyBike. Funkcja powinna dodać 500 do przejechanej odległości.
Upewnij się, że drugą funkcję możesz wywołać w main.
- Napisz strukturę
Computerz polamimanufacturer(tablica znaków długości 30) orazusage_hours(typuint). Następnie napisz dwie funkcje i wywołaj każdą z nich co najmniej jeden raz:
initComputer- funkcja przyjmuje dwa argumenty: producenta i liczbę godzin używania, i zwraca wskaźnik na nowo utworzoną strukturę, ustawiając wartości zgodnie z przekazanymi argumentami. Funkcja powinna także sprawdzać, czy nazwa producenta ma co najmniej 2 znaki i liczba godzin jest większa od 0. Jeśli oba warunki nie są spełnione łącznie, funkcja powinna zwracać NULL.increaseUsage- funkcja, której argumentem jest wskaźnik do strukturyComputer. Funkcja powinna dodać 100 do liczby godzin użytkowania.
Upewnij się, że drugą funkcję możesz wywołać w main.
- Napisz strukturę
Apartmentz polamiaddress(tablica znaków długości 100) oraznumber_of_residents(typuint). Następnie napisz dwie funkcje i wywołaj każdą z nich co najmniej jeden raz:
initApartment- funkcja przyjmuje dwa argumenty: adres i liczbę mieszkańców, i zwraca wskaźnik na nowo utworzoną strukturę, ustawiając wartości zgodnie z przekazanymi argumentami. Funkcja powinna sprawdzać, czy adres ma co najmniej 5 znaków i liczba mieszkańców jest większa niż 0. W przypadku nie spełnienia obu warunków łącznie, funkcja powinna zwracać NULL.increaseResidents- funkcja, której argumentem jest wskaźnik do strukturyApartment. Funkcja powinna dodać 2 do liczby mieszkańców.
Upewnij się, że drugą funkcję możesz wywołać w main.
Utwórz typ wyliczeniowy
Monthreprezentujący miesiące. Napisz funkcjędays_in_month(), która przyjmuje jako argument wartość typuMonthi zwraca liczbę dni w danym miesiącu. Pomiń problem roku przestępnego w tym zadaniu. Stwórz przypadek testowy dla funkcji.Utwórz typ wyliczeniowy
Dayreprezentujący dni tygodnia. Napisz funkcjęprint_days(), która przyjmuje jako argumenty wartość typuDayi liczbęn. Funkcja powinna wydrukować bieżący dzień tygodnia, a następnie rekurencyjnie wywołać siebie z następnym dniem tygodnia, dekrementującnprzy każdym wywołaniu, ażnspadnie do 0. Stwórz przypadek testowy dla funkcji.Stwórz unię
Number, która umożliwia jednoczesne przechowywanie liczby całkowitej i wymiernej. Następnie “opakuj” unię w strukturę i stwórz funkcję, które umożliwiają zainicjowanie pól unii ze standardowego wejścia. Stwórz przypadek testowy dla funkcji.Stwórz strukturę
elemento dwóch polach:itypuintoraznextbędące wskaźnikiem na zdefiniowaną strukturę. Stwórz wmainkilka zmiennych strukturalnych.