- (1p.) Zdefiniuj strukturę pozwalającą przechowywać dane pojedynczego elementu wybranej bazy danych np. katalogu książek w bibliotece, spisu samochodów w autokomisie, zestawienia miesięcznych wydatków studenta, itp.Następnie zdefiniuj N-elementową (pseudo-dynamiczną) tablicę w/w struktur pozwalającą przechowywać dane wielu elementów (ale nie więcej niż N) z dodatkowym licznikiem informującym o ilości wpisanych danych.
- (2p.) Napisz funkcje pozwalające wczytywać i wyświetlać zawartość bazy.
Uwaga: w/w tablice lub struktury powinny być przekazywane jako parametry funkcji ! - (+1p.) zdefiniuj operatory strumieni istream i ostream.
- (+1p.) napisz funkcje do zapisywania zawartości bazy do pliku i wczytywania z pliku.
- (3p.) Napisz funkcję pozwalającą wyszukać w bazie elementy o zadanych parametrach np. samochód marki FIAT, rocznik nie starszy niż 1990, o cenie z zadanego przedziału.
Dodatkowe
zadania „dla zaawansowanych”:
- (2p.) Napisz funkcję umożliwiającą edycję/poprawianie danych pojedynczych elementów bazy. Np zmianę ceny samochodu w autokomisie, aktualizację adresu w bazie danych personalnych, itp
- Napisz funkcję umożliwiającą interaktywne przeglądanie zawartości bazy.
Uwzględnij przypadki, gdy dane zapisane w bazie nie zmieszczą się na jednym ekranie (np. katalog 1000 tytułów ksiażek i nazwisk autorów).- (2p.) w najprostszym przypadku (przeglądanie bazy od pierwszego do ostatniego elementu) wystarczy wprowadzenie tzw. stronicowania,
- (4p.) najbardziej uniwersalnym rozwiązaniem jest umożliwienie „sterowania” przeglądaniem za pomocą strzałek na klawiaturze tzn:
- klawisz „<-” oznacza: wyświetl poprzedni element bazy
- klawisz „->” oznacza: wyświetl następny element bazy
- klawisz „ESC” oznacza: zakończ przeglądanie
Zadanie alternatywne
- (6p.) Zdefiniuj strukturę definiującą liczby ułamkowe (ułamki zwykłe) oraz funkcje operujące na niej. Powinny być zdefiniowane funkcje do wczytywania wartości, wyświetlania (+1p. za zdefiniowanie operatorów strumieni), czterech działań arytmetycznych (+0,5p. za zdefiniowanie operatorów) oraz skracanie ułamka i wydzielania części całkowitej. Przydadzą się też pomocnicze funkcje: NWD, NWW i sprowadzające do wspólnego mianownika.
//alg. Euklidesa
int NWD(int a, int b)
{ int pom;
while(b!=0)
{
pom = b;
b = a%b;
a = pom;
}
return a;
}
//lub rekurencyjnie
int NWD(int a, int b)
{
if (b == 0)
return a;
return NWD(b,a%b);
}
//NWW
int NWW(int a, int b)
{
return a*b/NWD(a,b);
}
Przykład z operatorami