Pytania przykładowe na egzamin z RSO

CORBA

Zadanie 1

Zaimplementować serwer systemu komunikacji o rozkładzie jazdy komunikacji miejskiej. Klient podaje numer linii (np. 13 albo Z2) i nazwę przystanku (np. Żeromskiego), otrzymuje listę par (nazwa przystanku, liczba minut), określających czas przejazdu do określonego przystanku. W przypadku błędu w danych wejściowych serwer powinien zgłosić wyjątek. Zademonstrować działanie programu na zasadzie co najmniej trzech przykładów. Technika realizacji: CORBA

Zadanie 2

Zaimplementować serwer skorowidza. Klient podaje listę liter początkowych, otrzymuje od serwera listę par {litera, lista_wyrazów_zaczynających_się_na_daną_literę}. Jeśli na daną literę nie zaczyna się żaden wyraz, sekwencja w parze jest pusta. Zaprezentować co najmniej dwa przykłady. Technika realizacji: CORBA

DCOM

Zadanie 1

Zaimplementować serwer statystyki liter w łańcuchu tekstowym. Klient podaje łańcuch tekstowy ASCII, a serwer zwraca wektor par (CHAR, UINT), zawierającą kod ASCII znaku i liczbę wystąpień. Należy unikać przekazywania par dla nieistniejących w łańcuchu znaków.

PODPOWIEDŹ: kod ASCII znaku można w C interpretować jako jednobajtową liczbę z zakresu 0-255 i wykorzystać do indeksowania tymczasowego wektora zliczającego znaki. Dla serwera należy napisać klienta korzystając ze smart pointers demonstrującego działanie systemu. System powinien poprawnie alokować i zwalniać pamięć oraz obsługiwać wyjątki. DCOM, dll.

Zadanie 2

Opracować komponent pozwalający na rozwiązywanie równań postaci Ax^2 + Bx + C = 0. Metoda realizująca to zadanie powinna przyjmować jako dane wejściowe parametry A, B i C typu double, a zwracać strukturę zawierającą ilość rozwiązań i wektor danych typu complex z rozwiązaniami. Dla typu complex należy utworzyć odpowiednią strukturę. Należy rozważyć różne formy tego równania, również dla A = 0. Metoda powinna zwracać błąd jedynie w przypadku poblemów z alokacją pamięci (E_OUTOFMEMORY). Należy również przygotować klienta do demonstracji działania komponentu dla trzech różnych przypadków ilości rozwiązań. Klient powinien używać smart pointera interfejsu komponentu, poprawnie obsługiwać wyjątki, alokować i zwalniać pamięć. Technika realizacji: DCOM, dll.

PODPOWIEDŹ:

DELTA = B*B-4*A*C;
jeśli DELTA = 0, to jedno rozwiązanie: X1 = -B/(2*A).
Jeśli DELTA > 0 to dwa rozwiązania: X1 = -B/(2*A) - sqrt(DELTA)/(2*A), X2 = -B/(2*A) + sqrt(DELTA)/(2*A).
Jeśli DELTA < 0 to dwa rozwiązania: X1 = -B/(2*A) - sqrt(DELTA)/(2*A)*i, X2 = -B/(2*A) + sqrt(DELTA)/(2*A)*i.
Jeśli A = 0, B = 0 oraz C = 0 to nieskończona liczba wyników - powinien zostać zgłoszony własny wyjątek.

O ile nie zaznaczono inaczej, treść tej strony objęta jest licencją Creative Commons Attribution-Share Alike 2.5 License.