Работа с персональным кодом

Исходная информация

https://www.riigiteataja.ee/akt/106032012004 – Статья о Персональном коде жителя ЭР

Selgitus EV isikukoodile

Isikukood koosneb üheteistkümnest numbrist. Isikukoodi numbrite tähendused on:

esimene number
- 1 - aastail 1800-1899 sündinud mees;
- 2 - aastail 1800-1899 sündinud naine;
- 3 - aastail 1900-1999 sündinud mees;
- 4 - aastail 1900-1999 sündinud naine;
- 5 - aastail 2000-2099 sündinud mees;
- 6 - aastail 2000-2099 sündinud naine;

teine ja kolmas number
- sünniaasta kaks viimast numbrit;

neljas ja viies number
- sünnikuu number (jaanuar - 01 jne);

kuues ja seitsmes number
- sünnikuupäev (01 jne);

kaheksas, üheksas ja kümnes number
- järjenumber ühel ja samal päeval sündinuile;

üheteistkümnes number
- kontrollnumber, mis arvutatakse standardis toodud eeskirja kohaselt.


Allikas:
https://www.riigiteataja.ee/akt/106032012004

Kontrollnumbri arvutamise algoritm on järgmine:

Isikukoodis peavad kõik sugu ning kuupäeva tähistavad väärtused olema
võimalikud ning viimane kontrollnumber arvutatakse järgneva algoritmi järgi:

Liidetakse kokku esimese kümne numbri korrutised igale arvule vastava
järjekorranumbriga (va 10. number, kus kordaja on taas 1) ning leitakse saadud 
summast jääk jagamisel 11-ga. See jääk ongi kontrollnumber.

Kui jääk on võrdne kümnega, tehakse arvutus uuesti ning võetakse teguriteks, millega 
isikukoodi numbreid korrutada, vastavalt 3, 4, 5, 6, 7, 8, 9, 1, 2, 3. Leitaks jääk
jagamisel 11-ga. Ja see ongi kontrollnumber.

Kui jääk jälle võrdub 10ga, siis määratakse kontrollnumbriks 0.

Näide: isikukoodi 37605030299 kontroll. 
Summa = 1*3 + 2*7 + 3*6 + 4*0 + 5*5 + 6*0 + 7*3 + 8*0 + 9*2 + 1*9 = 108
108 jääk jagamisel 11-ga on 9 => isikukoodi viimane number peab olema üheksa. 

Seega on kaks komplekti kordajaid, mida kontrollnumbri leidmisel vaja võib minna:
kordajad1 = (1,2,3,4,5,6,7,8,9,1)
kordajad2 = (3,4,5,6,7,8,9,1,2,3)

(источник http://www.cs.tlu.ee/~inga/progbaas/Praktiline/isikukood.txt)

Задания:

1. Составить алгоритм проверки подлинности персонального кода в виде:

  1. сценария
  2. блок схемы (flowchart)

2. Определить дату рождения владельца кода в формате “день месяц год”

Написать сценарий и составить блок-схему (flowchart)

  1. День от 1 до 31
  2. Месяц названием
  3. Полное число года

3. Определить возраст владельца кода и его статус относительно совершеннолетия

Написать сценарий и составить блок-схему (flowchart)

  1. Выдать возраст в количестве полных лет
  2. Выдать возраст в количестве полных лет, полных месяцев и дней
  3. Выдать статус Adult или Teenage если человеку больше или меньше, чем полных 18 лет соответственно

4. Сортировка нескольких персональных кодов

Написать сценарий и составить блок-схему (flowchart)

  1. Определить самого молодого
  2. Определить самого старого
  3. Определить родившихся в один день и месяц
  4. Определить родившихся в одном месте

5. Оповещение о дне рождения

Написать сценарий и составить блок-схему (flowchart)

  1. Определить список лиц, отмечающих день рождения сегодня
  2. Определить список лиц, отмечающих день рождения завтра