Visual Basic
6 отговора
256 прегледа
Visual Basic
Neobhodim mi e algorituma za korektnost na EGN, po vazmojnost na VB.
Blagodaria vi predvaritelno
Blagodaria vi predvaritelno
Re: Visual Basic
Единният Граждански Номер (ЕГН) се състои от 10 цифри. Първите 6 цифри са дата на раждане (ГГММДД), следващите 3 са поредност на раждането - число от 000 до 999 и десетата цифра е контролна.
Разряди на ЕГН:
Коректността на ЕГН се установява чрез проверка на датата, пола на лицето и контролната цифра.
1. Проверка на датата
Проверяват се денят, месецът и годината за валидна дата. За родените преди 01.01.1900 г. към месеца се прибавя числото 20. За родените след 31.12.1999 г. към месеца се прибавя числото 40.
2. Проверка на пол
Деветата цифра на ЕГН (К9) е четна за мъже и нечетна за жени.
3. Алгоритъм за изчисляване на контролната цифра
На всяка цифра от първите девет от ляво на дясно т.е. от К1 до К9, започвайки от К1 се определят следните тегла: 2 4 8 5 10 9 7 3 6. Всяка от цифрите на ЕГН се умножава по съответното тегло и получените произведения се сумират. Сумата от произведенията се дели на 11. Получения остатък е контролното число, като при остатък 0 или 10 контролната цифра е 0.
Примери:
7524169268 Мъж, с дата на раждане 16.04.1875 г.
7501010010 Жена, с дата на раждане 01.01.1975 г.
7552010005 Мъж, с дата на раждане 01.12.2075 г.
8032056031 Жена, с дата на раждане 05.12.1880 г.
8001010008 Мъж, с дата на раждане 01.01.1980 г.
7552011038 Жена, с дата на раждане 01.12.2075 г.
8141010016 Жена, с дата на раждане 01.01.2081 г
Със заповед N РД 02-14-637/22.06.1998 година министърът на регионалното развитие и благоустройството и председател на "Информационно общество" г-н Евгений Бакърджиев утвърди промяната, касаеща ЕГН за лицата, които ще бъдат родени след 31.12.1999 г.
Разряди на ЕГН:
Коректността на ЕГН се установява чрез проверка на датата, пола на лицето и контролната цифра.
1. Проверка на датата
Проверяват се денят, месецът и годината за валидна дата. За родените преди 01.01.1900 г. към месеца се прибавя числото 20. За родените след 31.12.1999 г. към месеца се прибавя числото 40.
2. Проверка на пол
Деветата цифра на ЕГН (К9) е четна за мъже и нечетна за жени.
3. Алгоритъм за изчисляване на контролната цифра
На всяка цифра от първите девет от ляво на дясно т.е. от К1 до К9, започвайки от К1 се определят следните тегла: 2 4 8 5 10 9 7 3 6. Всяка от цифрите на ЕГН се умножава по съответното тегло и получените произведения се сумират. Сумата от произведенията се дели на 11. Получения остатък е контролното число, като при остатък 0 или 10 контролната цифра е 0.
Примери:
7524169268 Мъж, с дата на раждане 16.04.1875 г.
7501010010 Жена, с дата на раждане 01.01.1975 г.
7552010005 Мъж, с дата на раждане 01.12.2075 г.
8032056031 Жена, с дата на раждане 05.12.1880 г.
8001010008 Мъж, с дата на раждане 01.01.1980 г.
7552011038 Жена, с дата на раждане 01.12.2075 г.
8141010016 Жена, с дата на раждане 01.01.2081 г
Със заповед N РД 02-14-637/22.06.1998 година министърът на регионалното развитие и благоустройството и председател на "Информационно общество" г-н Евгений Бакърджиев утвърди промяната, касаеща ЕГН за лицата, които ще бъдат родени след 31.12.1999 г.
Eto go i algorituma
Az sum go pisal na pascal ti sam si go prevedi na basic
Дори и да не можеш - ТРЯБВА.
Щом трябва значи МОЖЕШ.
function Check_EGN(EGN: string): Boolean;
{Проверка за правилно контр. число на ЕГН }
const
Ex10: array [1..10] of Longint =
(1000000000,100000000,10000000,
1000000,100000,10000,1000,100,10,1);
var
Nm : array [1..10] of Longint;
Code : Integer;
C_num: Longint;
n_egn: Double;
n: Integer;
begin
Result := False;
Val(EGN, N_Egn, code);
{ Преобразува символната променлива ЕGN в числова N_Egn }
if Code <> 0 then Exit;{ Ако има нецифрови данни или няма въведени данни отива на грешка}
for n := 1 to 10 do
begin
Nm[n] := Trunc( n_egn/Ex10[n] ); { Получава се поредното число от ЕГН в масива Nm }
N_egn := Round( Frac(n_egn/Ex10[n]) * Ex10[n] ); {Подготовка за получаване на следващото число}
end;
{ Изчислява контролното число }
C_num := (Nm[1]*2 + Nm[2]*4 + Nm[3]*8 +
Nm[4]*5 + Nm[5]*10 + Nm[6]*9 +
Nm[7]*7 + Nm[8]*3 + Nm[9]*6) mod 11;
if C_num = 10 then c_num := 0;
if C_num = Nm[10] then
Result := True;
end;
Дори и да не можеш - ТРЯБВА.
Щом трябва значи МОЖЕШ.
Редактирано от Shveik на