Валидно ЕГН

6 отговора 0 прегледа
#1

Валидно ЕГН

Здравейте !
Много ме мъчи този проблем , а той се състои в това проверка на валиден ЕГН.
=(2*7+4*7+8*1+5*1+10*2+9*4+7*2+3*2+6*0)/11-INТ((2*7+4*7+8*1+5*1+10*2+9*4+7*2+3*2+6*0)/11)
Пробвах няколко ЕГН-та резултата е валиден ЕГН ,а когато въведа моя ЕГН ми изписва че не е валиден, защо?
Някъде бях чел ,че :
Ако остатъка е 10, резултатът е 0, иначе резултатът е остатъка.
Ако полученото число съвпада със последната цифра от номера, то това ЕГН е коректно.
А при мен изпиава , че контролната цифра трябва да е 10 а няма как да е 10

Отговор
в отговор на constantata #2

Re: Валидно ЕГН

Не се чете някъде, а от извора
[линк]
Там можеш да провериш и ЕГН за валидност

Редактирано от TRN на

Отговор
в отговор на constantata #3

Re: Валидно ЕГН

Прав си, контролното число не може да е 10, но остатъкът, който изчислява формулата, която си дал - може. Просто в този случай за контролно число се приема 0. Това казва ГРАО.

Отговор
в отговор на constantata #4

Re: Валидно ЕГН

ае, човек, да не си със сбъркано ЕГН нещо?

Отговор
в отговор на f(x)dx #5

Re: Валидно ЕГН

Не , не съм със збъркан ЕГН !!!
Намерих от някъде този код ! Изпробвах го и пак ми дава грешен ЕГН
ето го въпросният код ,вижте го да не би да има допусната грешка ,аз не съзрях такава. Но както се казва два и пове4е мозъка мислят по -добре от един

Private Sub Cmd1_Click()
Dim a1 As Integer
Dim a2 As Integer
Dim a3 As Integer
Dim a4 As Integer
Dim a5 As Integer
Dim a6 As Integer
Dim a7 As Integer
Dim a8 As Integer
Dim a9 As Integer
Dim a10 As Integer
Dim Egn
Dim K1
Dim K2
Dim K3

Egn = TextBox1.Value

If Len(Egn) > 10 Or Len(Egn) < 10 Then
MsgBox "ЕГН- трябва да съдържа 10 символа", vbOKOnly
Exit Sub
Else
a1 = Mid(Egn, 1, 1)
a2 = Mid(Egn, 2, 1)
a3 = Mid(Egn, 3, 1)
a4 = Mid(Egn, 4, 1)
a5 = Mid(Egn, 5, 1)
a6 = Mid(Egn, 6, 1)
a7 = Mid(Egn, 7, 1)
a8 = Mid(Egn, 8, 1)
a9 = Mid(Egn, 9, 1)
a10 = Mid(Egn, 10, 1)

K1 = 2 * a1 + 4 * a2 + 8 * a3 + 5 * a4 + 10 * a5 + 9 * a6 + 7 * a7 + 3 * a8 + 6 * a9
K2 = K1 Mod 11

If K2 = a10 Then
MsgBox "ЕГН-то е вярно, контролното число е " & K2, vbOKOnly
If (a9 Mod 2) <> 0 Then
MsgBox "Пол: Женски", vbOKOnly
Else
MsgBox "Пол: Мъжки", vbOKOnly
End If
Else
MsgBox "ЕГН-то е гршно, контролното число трябва да бъде" & K2, vbOKOnly
End If
End If
End Sub

Редактирано от constantata на

Отговор
в отговор на constantata #6

Re: Валидно ЕГН

Сбъркан, а не Збъркан. И какво толкова има да му мислиш къде е грешката - тя се вижда веднага. ама на някой май не му се чете, това което му пуснаха по-горе.
Грешката е в проверката If K2 = a10 Then
сам си отговори, какво става ако к2=10, а последната цифра на ЕГН-то е 0.
Може да се реши с един ред:
If K2=10 Then K2=0

който да се сложи веднага след

К2= K1 Мод 11

Geocaching в България

Редактирано от Бypaн на

Отговор
в отговор на constantata #7

Re: Валидно ЕГН

Това при мен работи

Option Base 1
Function EGNIsOk(EGN As Variant) As Boolean
Dim I As Integer
Dim KS As Long
Dim KC As Variant
KC = Array(2, 4, 8, 5, 10, 9, 7, 3, 6)
KS = 0
For I = 1 To 9
KS = KS + KC(I) * Mid(EGN, I, 1)
Next
KS = KS Mod 11
If KS = 10 Then KS = 0
EGNIsOk = KS = Mid(EGN, 10, 1)
End Function


Отговор