Lista 8 (13 grudnia 2005): 12 punktów.
Przeczytaj z książki B.W.Kernighana i D.M.Ritchiego
Język ANSI C rozdział 6:
Struktury.
- (5 punktów)
W pliku nagłówkowym zdefiniuj strukturę struct Student
z trzema polami: imie, nazwisko i indeks.
Zadeklaruj także funkcję porownaj() do porównywania
studentów (leksykograficzne najpierw według nazwiska, podem według
imienia, a gdy obie te wartości są równe to według numeru indeksu).
Dalej, w oddzielnym pliku źródłowym zdefiniuj tą funkcję.
W następnym pliku żródłowym napisz program, który wczyta pewną
liczbę studentów (podaną przez użytkownika w trakcie działania
programu) do tablicy ze studentami, posortuje wszystkie wczytane
rekordy przy pomocy funkcji porównującej i wypisze je w porządku
niemalejącym na standardowym wyjściu.
Uwaga:
Do sortowania godzin zapisanych w tablicy napisz oddzielną funkcję.
- (7 punktów)
W pliku nagłówkowym zdefiniuj strukturę struct Godzina
z czterema polami bitowymi: godz, min,
sek i setne_sek, wszystkie zadeklarowane jako
unsigned int.
Zadeklaruj także dwie funkcje: jedną ustaw() do nadawania
nowych wartości w strukturze reprezentującej godzinę (o ile podane
w argumentach wartości są prawidłowe) i drugą porownaj()
do porównywania godzin zapisanych w takich strukturach (w obu
przypadkach do funkcji należy przekazywać wskaźniki do struktur).
Dalej, w oddzielnym pliku źródłowym zdefiniuj obie funkcje.
W następnym pliku żródłowym napisz program, który wczyta pewną
liczbę godzin (podaną przez użytkownika w trakcie działania
programu) do tablicy z godzinami, posortuje wszystkie wczytane
rekordy od najwcześniejszej do najpóźniejszej przy pomocy funkcji
porównującej i wypisze je w porządku niemalejącym na standardowym
wyjściu.
Uwaga:
Do sortowania godzin zapisanych w tablicy napisz oddzielną funkcję.
- (5 punktów)
Napisz program, który wszystkie liczby w systemie dziesiętnym podane
jako parametry wywołania programu wypisze na standardowe wyjście
w systemie rzymskim.
Twój program powinien sprawdzać, czy dany argument wywołania
programu jest liczbą dziesiętną z zakresu od 1 do 3999, a jeśli nie
to go pomijać (skorzystaj z funkcji atoi()).
Uwaga:
Do zamiany liczby całkowitej na postać rzymską napisz oddzielną
funkcję, która będzie zwracać wskaźnik do napisu reprezentującego
określoną wartość (wynik umieszczaj w lokalnej statycznej tablicy
znakowej).
Uwaga:
Przy zamianie liczby na postać rzymską skorzystaj z globalnej
tablicy struktur struct Rzym.
Struktura ta powinna posiadać dwa pola: wskaźnik na napis
char* reprezentujący liczbę w zapisie rzymskim
i odpowiadającą mu wartość całkowitą int.
Tablicę tą zainicjuj strukturami odpowiadającymi następującym
liczbom: 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4 i 1.
Uwaga:
Wartości cyfr w rzymskim systemie liczbowym:
cyfra rzymska | wartość |
---|
I | 1 |
V | 5 |
X | 10 |
L | 50 |
C | 100 |
D | 500 |
M | 1000 |
- (7 punktów, kontynuacja poprzedniego zadania)
Napisz program, który wszystkie liczby w systemie rzymskim podane
jako parametry wywołania programu wypisze na standardowe wyjście
w systemie dziesiętnym.
Uwaga:
Do zamiany liczby rzymskiej na wartość całkowitą napisz oddzielną
funkcję.
Uwaga:
Przy zamianie liczby rzymskiej na wartość całkowitą skorzystaj
z globalnej tablicy struktur struct Rzym zdefiniowanej jak
w poprzednim zadaniu.
Tablicę tą zainicjuj strukturami o odpowiednio dobranych
wartościach.
|