SYSTEMY DIALOGOWE

PROGRAMOWANIE

PROGRAMOWANIE OBIEKTOWE

WYNIKI KOLOKWIÓW

POB 1.   Książka kontaktowa. 

Opracować program pozwalający przechowywać informacje o kontakcie ze znajomymi.
Należy utworzyć klasy:
Osoba i Książka. Klasa Osoba przechowuje informacje o znajomym, jego imię, nazwisko, adres kontaktowy, e-mail, czy telefon. Klasa Książka przechowuje informacje o wszystkich osobach podczas pracy programu. Podczas gdy program jest wyłączony dane o osobach przechowywane są w pliku dane.db. Zarówno odczyt jaki i zapis dokonywane są automatycznie podczas uruchomienia i zamknięcia programu.
Użytkownik programu posługuje się menu tekstowym powinien móc wybrać jedna z poniższych komend:

-        
D – dodaj nowa osobę
-        
U – usuń osobę
-        
T osoba– podaj telefon do wskazanej osoby
-        
E osoba – podaj adres e-mail do wskazanej osoby
-        
A osoba – podaj adres kontaktowy do wskazanej osoby
-        
L litera – wypisz wszystkie osoby zaczynające się na literę "*"
-        
K – koniec programu

 

POB 2.  Kalkulator 3D

  Należy stworzyć klasy Stożek, Kula i Sześcian. W klasach tych należy stworzyć funkcję wylicz_objętość() która zwroci objętość tej bryły oraz funkcję wylicz_pole_powierzchni() która zwróci jej pole powierzchni. Przeciążone operatory + i – mają zwrócić odpowiednio sumę pól powierzchni i ich róznicę. Analogiczne operacje należy przewidzieć dla objętości.
Komunikacja program – użytkownik odbywa się za pomocą menu tekstowego. Podane klawisze powodują następujące czynności:
 -         N bryla nazwa – utworzenie nowego obiektu o określonej nazwie
-         +P nazwa1 nazwa2 – zwraca sume pól powierzchni brył o nazwie 1 i 2
-         +O nazwa1 nazwa 2 – zwraca sume objętości brył o nazwie 1 i 2
-         -P nazwa1 nazwa2 – zwraca różnice pola powierzchni pomiędzy bryłami o nazwie 1 i 2

-         -O nazwa1 nazwa2 – zwraca różnice obiętości pomiędzy bryłami o nazwie 1 i 2

 


POB 3  Rejestracja Samochodów

 

Należy stworzyć klasy Samochód, Kolor i Baza. Pierwsza z tych klas będzie zawierała informacje o samochodzie: kolor (z klasy Kolor), rok produkcji. Bedzie zawierała również funkcję kolizja która zwóci nowy samochód bez roku produkcji ale z kolorem powstałym z połączenia samochodów biorących udział w kolizji. Klasa Kolor zawiera informacje o składowych R, G, B oraz metodę mieszaj(Kolor k) która powie jaki kolor powstanie w wyniku połączenia dwoch kolorów. Klasa Baza przechowuje informacje o samochodach w postaci listy jednokierunkowej. Informacje do listy są wczytywane i zachowywane na dysku w pliku baza.txt. Użytkownik może komunikuje się z programem poprzez interfejs textowy. Klawiszami funkcyjnymi będą:

-         N - dodanie nowego samochodu do bazy

-         L kolor– wypisanie wszystkich samochodów o podanym kolorze

-         L rok produkcji – wypisanie listy samochodów z danego roku

-         K samochod1 samochod2– podać informacje co powstało w wyniku kolizji tych samochodów.


POB 4

 

Należy utworzyć klasy Koło, Kwadrat i Punkt. Klasy Kolo i Kwadrat dziedziczą po klasie Punkt i przechowują informacje o parametrach odpowiadającego obiektu (promień lub wielkości boków). W klasie Punkt przechowuje się współrzędne (x, y) oraz nazwę obiektu.  Informacje o wszystkich obiektach w programie należy przechowywać za pomocą listy dwukierunkowej cyklicznej. Komunikacja pomiędzy programem a użytkownikiem odbywa się w sposób tekstowy. Następujące polecenia powinny spowodować akcję:

 

-         N – utworzenie nowego obiektu (koło lub kwadrat)

-         L koło - wypisanie wszystkich kół

-         L kwadrat - wypisanie wszystkich kwadratów

-         P koło/kwadrat – wypisuje pole powierzchni wszystkich koł lub kwadratów

-         W nazwa1 nazwa2 – określa czy obiekty o nazwie1 i nazwie2 mają część wspólną i jeśli tak to podają rozmiar tego pola.


POB 5. Program fakturujący.

 

Pewna firma potrzebuje programu który uprości wystawianie faktur. Każda faktura jest wystawiana dla jakiejś firmy którą  realizuje klasa Odbiorca. Klasa ta zawiera następujące informacje: nazwa, adres , numer NIP. Firma wystawiająca fakturę jest reprezentowany przez klasę Wystawiajacy, która zawiera takie same informacje jak klasa Odbiorca. A obie te klasy (tj. Odbiorca i Wystawiajacy) dziedziczą po klasie Firma. Ponadto każda faktura jest reprezentowana przez klasę Faktura i ma swój indywidualny numer.

 

Wszystkie dane o firmach i wystawionych fakturach są przechowywane na dysku. Uruchomienie programu powoduje załadowanie tych danych.

 

Użytkownik programu dzięki tekstowemu menu powianiem móc:

-         N – dodać nową firmę

-         U – usunąć firmę (w  takim przypadku faktury wystawione dla danej firmy nadal zawierają wszystkie dane)

-         F – wystawić nową fakturę


POB. 6 Macierze - podmacierze

 

Należy napisać klasę Macierz reprezentującą liczby rzeczywiste.

 

Konstruktory tej klasy będą wyglądać w następujący sposób:

-         Macierz() – utworzy macierz jednoelementową

-         Macierz(int s) – utworzy macierz o s kolumnach i s wierszach.

-         Macierz( int w, int k) – utworzy macierz  o w wierszach i k kolumnach

 

Będzie ona zawierać następujące metody:

-         Generuj() - wypełni macierz losowymi liczbami

-         Wypełnij(double tab[]) – wypełni macierz wartościami z tablicy (w przypadku gdy wartości będzie za mało należy wyświetlić stosowny komunikat)

-         Porownaj(Macierz m) – dokona porównania czy macierz porównywana (m) zawiera się w macierzy porównywanej i poda współrzędne punktów identyczności

 

Ponadto należy przeciążyć następujące operatory:

-         << - wyświetli na ekranie macierz

-         == - wywoła metodę Porównaj(Macierz m)

 

Rozwiązanie uogólnić wykorzystując macierz szablonową.


POB 7. Macierze liczb zespolonych

 

Napisać klasę Cplx która będzie reprezentować liczby zespolone. Klasa Macierz będzie reprezentować tablicę 2-wymiarową liczb zespolonych. Obiekty klasy Macierz powinny być tworzone jednym z poniższych konstruktorów:

-         Macierz() -  utworzy macierz 1 na 1

-         Macierz(int s) – utworzy macierz o s kolumnach i s wierszach.

-         Macierz( int w, int k) – utworzy macierz  o w wierszach i k kolumnach

-         Macierz(bool b) -  utworzy macierz 1 na 1 i jeżeli wartość b będzie true to należy wypełnić ją losowymi liczbami zespolonymi

-         Macierz(int s, bool b) – utworzy macierz o s wierszach i s kolumnach, i jeżeli wartość b będzie true to należy wypełnić ją losowymi liczbami zespolonymi

-         Macierz( int w, int k, bool) – utworzy macierz  o w wierszach i k kolumnach, i jeżeli wartość b będzie true to należy wypełnić ją losowymi liczbami zespolonymi

 

 Ponadto należy przeciążyć operatory +, -, * tak aby następujące wywołanie spowodowało:

-         M1 + M2 – dodanie do macierzy M1 macierzy M2

-         M1 – M2 – odjęcie od macierz M1 macierzy M2

-         M1 * M2 – pomorzenie macierzy M1 przez macierz M2


POB 8. Kalkulator bin-hex-dec

 

Należy napisać klasy Binary, Hex i Any które będą odpowiednio reprezentować liczby binarne, heksadecymalne i liczby zapisane w systemie zdefiniowanym przez użytkownika. Wszystkie te klasy będą dziedziczyć po klasie Liczba w której będzie zapisana liczba w kodzie dziesiątkowym. Użytkownik powinien moc dodać, odjąć, pomnożyć, podzielić dowolną liczbę (spośród zdefiniowanych przez siebie).

 

Dzięki tekstowemu interfejsowi

-         B liczba – nowa liczba binarna

-         H liczba – nowa liczba heksadecymalna

-         R liczba – przedefiniowanie klasy Any tab aby podana liczba określała wielkość jednostki w tej klasie

-         A liczba – nowa liczba zdefiniowana przez użytkownika

Należy zwrocić uwagę aby uzytkownik mogł wprowadzać liczby w następujące sposób:

 

B(01010) + H(4D),

B(01010) - A(12),

 

 


POB 9

 

Pewna wideoteka potrzebuje elektronicznego systemu rejestracji wypożyczania kaset wideo.

Dlatego też należy napisać program realizujący tę operację w następujący sposób.

 

Klasa Kaseta reprezentuje kasetę wideo, jest ona opisywana przez następujące pola numer, tytuł, reżyser, głównych aktorów. Każda kaseta zalicza się do jakiegoś gatunku: komedia, dramat itp. Informacja ta jest przechowywana w oddzielnej klasie Gatunek.

 

Wideoteka posiada również informacje o swoich klientach. Dane te są reprezentowane przez klasę Klient która dziedziczy po klasie Osoba. Poza danymi odziedziczonymi klasa Klient zawiera informacje stanie obecnym konta (czy klient cos wypożyczył)  oraz historie tego co zostało wypożyczone przez tego klienta. Informacja ta powinna być przechowywana przez listę dwukierunkową nie cykliczna.

 

Klasa Osoba zawiera następujące informacje: imię, nazwisko, adres.

 

Obsługa wideoteki będzie posługiwać się tekstowym interfejsem i domaga się obsłużenia następujących poleceń:

 

-          N – nowa kaseta

-          W numer numer_klienta - wypożycz kasetę o numerze klientowi o numerze_klienta

-          Z numer – zwrot kasety

-          S numer_klienta – przedstawia procentowo informacje o rodzaju wypożyczonych kaset

UWAGA

Całość informacji należy przechowywać na dysku z automatycznym załadowaniem informacji przy uruchomieniu aplikacji.


POB. 10

 

Napisać klasę Punkt reprezentującą jeden z punktów w grafie. Punkt ten będzie miał swoje położenie w przestrzeni 2D przedstawione w postaci zmiennych x i y, oraz tablicę krawędzi którymi jest połączony z innymi punktami. Dla krawędzi została przewidziana oddzielna klasa Krawedz, która będzie zawierała informacje skąd i dokąd jest prowadzona krawędź oraz jej koszt.

 

Napisać program, który będzie szukał w grafie drogi o najniższym koszcie. Oraz umożliwi wprowadzanie nowego grafu użytkownikowi przez menu tekstowe, w którym zostaną zdefiniowane następujące polecenia:

-          N – nowy graf

-          P – nowy punkt

-          K z_punktu do_punktu waga– dodaj krawędź z podanego punktu do podanego punktu o okreslonej wadze

-          W – wyliczyć i wyświetlić wynik

 

UWAGA

Należy przeciążyć następujące operatory:

Krawedz + Punkt

Punkt + Krawedz

<< punkt - wyświetlenie wyniku jeżeli punkt będzie miejscem startu.