Валидно ЕГН
6 отговора
0 прегледа
Валидно ЕГН
Здравейте !
Много ме мъчи този проблем , а той се състои в това проверка на валиден ЕГН.
=(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
Много ме мъчи този проблем , а той се състои в това проверка на валиден ЕГН.
=(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
Re: Валидно ЕГН
Не се чете някъде, а от извора
[линк]
Там можеш да провериш и ЕГН за валидност
[линк]
Там можеш да провериш и ЕГН за валидност
Редактирано от TRN на
Re: Валидно ЕГН
Прав си, контролното число не може да е 10, но остатъкът, който изчислява формулата, която си дал - може. Просто в този случай за контролно число се приема 0. Това казва ГРАО.
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
Намерих от някъде този код ! Изпробвах го и пак ми дава грешен ЕГН
ето го въпросният код ,вижте го да не би да има допусната грешка ,аз не съзрях такава. Но както се казва два и пове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 на
Re: Валидно ЕГН
Сбъркан, а не Збъркан. И какво толкова има да му мислиш къде е грешката - тя се вижда веднага. ама на някой май не му се чете, това което му пуснаха по-горе.
Грешката е в проверката If K2 = a10 Then
сам си отговори, какво става ако к2=10, а последната цифра на ЕГН-то е 0.
Може да се реши с един ред:
If K2=10 Then K2=0
който да се сложи веднага след
К2= K1 Мод 11
Geocaching в България
Грешката е в проверката If K2 = a10 Then
сам си отговори, какво става ако к2=10, а последната цифра на ЕГН-то е 0.
Може да се реши с един ред:
If K2=10 Then K2=0
който да се сложи веднага след
К2= K1 Мод 11
Geocaching в България
Редактирано от Бypaн на
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