Z.1. (3pkt.) Kalendarz
Zaprojektować strukturę danych (dowolną) służącą do przechowywania rozłącznych, domkniętych przedziałów.
Program powinien udostępniać następujące funkcje:
a. Dodawanie przedziału do bazy - program informuje, ze dodał przedział, lub że nie mógł tego zrobić, bo podany przedział kolidował z pozostałymi.
b. Znajdowanie przedziału zawierającego dany punkt - podanie koców przedziału, lub informacji, że dany punkt nie należy do żadnego z nich.
c. Usuwanie przedziałów z bazy (tylko takich, które w niej wcześniej były).
d. Wypisywanie przedziałów zapamiętanych.
Przykład działania
- wprowadz(2,5) -ok
- wprowadz(0,1) -ok
- wprowadz(3,4) -nie można, kolizja
- znajdz(4) - liczba 4 jest w przedziale [2,5]
- znajdz(6) - liczby 6 nie ma w przedziałach -usuń(3,5) - nie było takiego przedziału -usuń(2,5) -usunięto
- wprowadz(3,4) -ok
-stan bazy -[0,1], [3,4]
Z.2. (3pkt.) Dowód osobisty
Proszę napisać program sprawdzający, czy wpisany ciąg znaków jest poprawnym numerem dowodu.
Dowód osobisty, jak każdy dokument, posiada unikalny identyfikator. W tym przypadku jest to seria i numer dowodu.
Seria dowodu to 3 litery które w trakcie sprawdzania jego cyfry kontrolnej zamienia się na wartości liczbowe wg poniższego wzoru:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
Natomiast numer dowodu osobistego to 6 cyfr, z czego pierwsza cyfra to cyfra kontrolna.
Aby obliczyć cyfrę kontrolną należy wartość każdego znaku identyfikatora (za wyjątkiem cyfry kontrolnej) pomnożyć przez odpowiednią wagę. Wagi te to, kolejno: 7 3 1 7 3 1 7 3. Następnie iloczyny te sumuje się i dzieli modulo 10.
Sprawdzimy poprawność numeru: ABS 123456
Dane: A B S 1 2 3 4 5 6
Wartość: 10 11 28 (1) 2 3 4 5 6
Waga: 7 3 1 - 7 3 1 7 3
Iloczyn: 70 33 28 - 14 9 4 35 18 Suma: 70 + 33 + 28 + 14 + 9 + 4 +35 +18 = 211
Reszta z dzielenia 211 mod 10 = 1.
Jak widać wynik oraz cyfra kontrolna są sobie równe, zatem podany numer dowodu osobistego jest prawidłowy.