BeNefSE Posted January 1, 2012 Share Posted January 1, 2012 (edited) [font="Arial Black"][size="2"][b]Adamın biri aramış bulmuş bana denk geldi, yazayım istedim. Denemelerimde olumlu sonuç veriyor. TC Kimlik numaraları 11 basamaktan oluşmaktadır. İlk 9 basamak arasında kurulan bir algoritma bize 10. basmağı, ilk 10 basamak arasında kurulan algoritma ise bize 11. basamağı verir. * 11 hanelidir. * Her hanesi rakamsal değer içerir. * İlk hane 0 olamaz. * 1. 3. 5. 7. ve 9. hanelerin toplamının 7 katından, 2. 4. 6. ve 8. hanelerin toplamı çıkartıldığında, elde edilen sonucun 10'a bölümünden kalan, yani Mod10'u bize 10. haneyi verir. * 1. 2. 3. 4. 5. 6. 7. 8. 9. ve 10. hanelerin toplamından elde edilen sonucun 10'a bölümünden kalan, yani Mod10'u bize 11. haneyi verir. [/b][/size][/font] [b]Kaynak kodları da var bu algoritmanın bir projede kullanmak isteyen arkadaş olursa paylaşabilirim...[/b] Edited January 1, 2012 by BeNefSE Quote Link to comment Share on other sites More sharing options...
NotToday Posted January 1, 2012 Share Posted January 1, 2012 Abi ben bunla amsde basit bir prpje yapıyım Quote Link to comment Share on other sites More sharing options...
BeNefSE Posted January 1, 2012 Author Share Posted January 1, 2012 [quote name='ReaLyMaN' date='01 January 2012 - 21:06 ' timestamp='1325444793' post='1134711'] Abi ben bunla amsde basit bir prpje yapıyım [/quote] Yap yap kodları var C+ ve VB kodları var istersen veririm.... Quote Link to comment Share on other sites More sharing options...
NotToday Posted January 1, 2012 Share Posted January 1, 2012 Abi zahmet olmazsa öm atar mısın?Yarın bakıyım.Karnımın ağrısından duramıyorum şimdi de Quote Link to comment Share on other sites More sharing options...
justpl4y Posted January 1, 2012 Share Posted January 1, 2012 Yemedim içmedim tek tek uğraştım. Sonuç olarak haklısınız Quote Link to comment Share on other sites More sharing options...
Guest _ULTIMATE_ Posted January 1, 2012 Share Posted January 1, 2012 [quote name='ReaLyMaN' date='01 January 2012 - 21:16 ' timestamp='1325445407' post='1134718'] Abi zahmet olmazsa öm atar mısın?Yarın bakıyım.Karnımın ağrısından duramıyorum şimdi de [/quote] WCye git rahatla Herşeyin hava olduğunu anlayacaksın Quote Link to comment Share on other sites More sharing options...
ATTACK_09 Posted January 1, 2012 Share Posted January 1, 2012 gerçek deil bu Quote Link to comment Share on other sites More sharing options...
BeNefSE Posted January 1, 2012 Author Share Posted January 1, 2012 [quote name='ATTACK_09' date='01 January 2012 - 23:00 ' timestamp='1325451612' post='1134768'] gerçek deil bu [/quote] Gerçek değil derken denedin de olmadı mı yoksa başka bişey mi var? Quote Link to comment Share on other sites More sharing options...
ATTACK_09 Posted January 1, 2012 Share Posted January 1, 2012 denedim olmadı yanlışmı die bi daha denedim gene olmadı Quote Link to comment Share on other sites More sharing options...
abdullahTR Posted January 1, 2012 Share Posted January 1, 2012 tc kimlik numaralarının son harfi hep çifttir dikkat edin Quote Link to comment Share on other sites More sharing options...
ekycy Posted January 1, 2012 Share Posted January 1, 2012 (edited) Bir arkadaş daha önce bir konu açmış, ilgilenen orayıda inceleyebilir. [quote]http://www.tnctr.com/topic/191695-kimlik-numarasy-bulucu/[/quote] Edited January 1, 2012 by ekycy Quote Link to comment Share on other sites More sharing options...
BeNefSE Posted January 8, 2012 Author Share Posted January 8, 2012 [b][size="2"][font="Arial Black"]Projelerde kullanmak isteyen arkadaşlaar için kaynak kodlar...[/font][/size][/b] [b][size="2"][font="Arial Black"]C* [spoiler] public static bool TcDogrulaV2(string tcKimlikNo) { bool returnvalue = false; if (tcKimlikNo.Length == 11) { Int64 ATCNO, BTCNO, TcNo; long C1,C2,C3, C4, C5,C6,C7,C8, C9,Q1,Q2; TcNo = Int64.Parse(tcKimlikNo); ATCNO = TcNo / 100; BTCNO = TcNo / 100; C1 = ATCNO % 10; ATCNO = ATCNO / 10 ; C2 = ATCNO % 10; ATCNO = ATCNO / 10 ; C3 = ATCNO % 10; ATCNO = ATCNO / 10 ; C4 = ATCNO % 10; ATCNO = ATCNO / 10 ; C5 = ATCNO % 10; ATCNO = ATCNO / 10 ; C6 = ATCNO % 10; ATCNO = ATCNO / 10 ; C7 = ATCNO % 10; ATCNO = ATCNO / 10 ; C8 = ATCNO % 10; ATCNO = ATCNO / 10 ; C9 = ATCNO % 10; ATCNO = ATCNO / 10 ; Q1 = ((10-((((C1+C3+C5+C7+C9)*3)+(C2+C4+C6+C8))%10))%10); Q2 = ((10-(((((C2+C4+C6+C8)+Q1)*3)+(C1+C3+C5+C7+C9))%10))%10); returnvalue = ((BTCNO * 100)+(Q1 * 10)+Q2 == TcNo); } return returnvalue; } [/spoiler] VB [spoiler]Public Shared Function TcDogrulaV2(ByVal tcKimlikNo As String) As Boolean Dim returnvalue As Boolean = False If (tcKimlikNo.Length <> 11) Then Return returnvalue End If Dim TcNo As Long = Long.Parse(tcKimlikNo) Dim ATCNO As Long = (TcNo / 100) Dim BTCNO As Long = (TcNo / 100) Dim C1 As Long = (ATCNO Mod 10) ATCNO = (ATCNO / 10) Dim C2 As Long = (ATCNO Mod 10) ATCNO = (ATCNO / 10) Dim C3 As Long = (ATCNO Mod 10) ATCNO = (ATCNO / 10) Dim C4 As Long = (ATCNO Mod 10) ATCNO = (ATCNO / 10) Dim C5 As Long = (ATCNO Mod 10) ATCNO = (ATCNO / 10) Dim C6 As Long = (ATCNO Mod 10) ATCNO = (ATCNO / 10) Dim C7 As Long = (ATCNO Mod 10) ATCNO = (ATCNO / 10) Dim C8 As Long = (ATCNO Mod 10) ATCNO = (ATCNO / 10) Dim C9 As Long = (ATCNO Mod 10) ATCNO = (ATCNO / 10) Dim Q1 As Long =((10-(((((((C1+C3)+C5)+C7)+C9)*3)+(((C2+C4)+C6)+C8))Mod 10))Mod 10) Dim Q2 As Long =((10-(((((((C2+C4)+C6)+C8)+Q1)*3)+((((C1+C3)+C5)+C7)+C9))Mod 10))Mod 10) Return ((((BTCNO * 100) + (Q1 * 10)) + Q2) = TcNo) End Function [/spoiler] VB [spoiler] Function TcDogrulaV2(ByVal tcKimlikNo As String) As Boolean Dim returnvalue As Boolean = False If (tcKimlikNo.Length <> 11) Then tcCustom.ErrorMessage = "<br />TC Kimlik Numarası 11 Haneli Olmalıdır." Return returnvalue End If Dim TcNo As Long = Long.Parse(tcKimlikNo) Dim BTCNO As Long = Long.Parse(Left(tcKimlikNo, 9)) Dim C1 As Long = Long.Parse(Mid(tcKimlikNo, 1, 1)) Dim C2 As Long = Long.Parse(Mid(tcKimlikNo, 2, 1)) Dim C3 As Long = Long.Parse(Mid(tcKimlikNo, 3, 1)) Dim C4 As Long = Long.Parse(Mid(tcKimlikNo, 4, 1)) Dim C5 As Long = Long.Parse(Mid(tcKimlikNo, 5, 1)) Dim C6 As Long = Long.Parse(Mid(tcKimlikNo, 6, 1)) Dim C7 As Long = Long.Parse(Mid(tcKimlikNo, 7, 1)) Dim C8 As Long = Long.Parse(Mid(tcKimlikNo, 8, 1)) Dim C9 As Long = Long.Parse(Mid(tcKimlikNo, 9, 1)) Dim Q1 As Long = ((10 - (((((((C1 + C3) + C5) + C7) + C9) * 3) + (((C2 + C4) + C6) + C8)) Mod 10)) Mod 10) Dim Q2 As Long = ((10 - (((((((C2 + C4) + C6) + C8) + Q1) * 3) + ((((C1 + C3) + C5) + C7) + C9)) Mod 10)) Mod 10) 'Response.Write((((BTCNO * 100) + (Q1 * 10)) + Q2) & " - ") 'Response.Write(tcKimlikNo) If ((((BTCNO * 100) + (Q1 * 10)) + Q2) = TcNo) Then tcCustom.ErrorMessage = "" Else tcCustom.ErrorMessage = "<br />Hatalı TC Kimlik Numarası." End If Return ((((BTCNO * 100) + (Q1 * 10)) + Q2) = TcNo) End Function [/spoiler] [spoiler] var isShift=false; function keyUP(keyCode) { if(keyCode==16) isShift = false; } function isNumeric(keyCode) { if(keyCode==16) isShift = true; return ((keyCode >= 48 && keyCode <= 57 || keyCode == 8 || (keyCode >= 96 && keyCode <= 105)) && isShift == false); } [/spoiler] [/font][/size][/b] Quote Link to comment Share on other sites More sharing options...
BeNefSE Posted January 8, 2012 Author Share Posted January 8, 2012 [quote name='ATTACK_09' date='01 January 2012 - 23:26 ' timestamp='1325453219' post='1134783'] denedim olmadı yanlışmı die bi daha denedim gene olmadı [/quote] Bir yerde hata yapmış olabilirsin ben denedim sonuç olumlu deneyen arkadaşlarda var.İlk denememde bende de olmamıştı rakamların yerini karıştırmıştım... Quote Link to comment Share on other sites More sharing options...
yuuksel Posted January 8, 2012 Share Posted January 8, 2012 uzun uğraşlar sonucu ben de öyle buldum bu sayıların mantığı ne acaba Quote Link to comment Share on other sites More sharing options...
blue_life Posted January 9, 2012 Share Posted January 9, 2012 (edited) Şimdi baktım ve yöntem doğru. Guili Autoit kodlarıda benden olsun [b]Autoit Code:[/b] [codebox]#NoTrayIcon _TC_FOUND() Func _TC_FOUND() Local $Form1 = GUICreate("TC Kimlik Numarasının Son Iki Rakamını", 300, 110) Local $Group1 = GUICtrlCreateGroup("TC Kimlik Numarasının 8 hanesini giriniz", 10, 10, 280, 60) Local $Input1 = GUICtrlCreateInput("", 20, 35, 240, 20,0x2000) GUICtrlSetLimit(-1,9,9) Local $Label = GUICtrlCreateLabel("??", 265, 37, 20, 20) Local $Button1 = GUICtrlCreateButton("Son iki rakamını Hesapla", 10, 80, 280, 20) Local $FoundTc GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case -3 Exit Case $Button1 $FoundTc = _TC_CALC(StringStripWS(GUICtrlRead($Input1),,$Form1) If @error = 0 Then GUICtrlSetData($Label,$FoundTc) ContinueLoop EndIf GUICtrlSetData($Label,"??") GUICtrlSetData($Input1,"") GUICtrlSetState($Input1,256) EndSwitch WEnd EndFunc Func _TC_CALC($Number,$hwnd = 0) If StringLen($Number) <> 9 Then MsgBox(64,"Hata!","TC kimlik muarası hatalı girilimiş!",0,$hwnd) Return SetError(1,0,"") EndIf Local $StringSplit = StringSplit($Number,"",1) ;1. 3. 5. 7. ve 9. hanelerin toplamının 7 katından, 2. 4. 6. ve 8. hanelerin toplamı çıkartıldığında, elde edilen sonucun 10'a bölümünden kalan, yani Mod10'u bize 10. haneyi verir. Local $FoundN1 = ($StringSplit[1] + $StringSplit[3] + $StringSplit[5] + $StringSplit[7] + $StringSplit[9]) * 7 $FoundN1 = Mod($FoundN1 - ($StringSplit[2] + $StringSplit[4] + $StringSplit[6] + $StringSplit[8]),10) ;1. 2. 3. 4. 5. 6. 7. 8. 9. ve 10. hanelerin toplamından elde edilen sonucun 10'a bölümünden kalan, yani Mod10'u bize 11. haneyi verir. Local $FoundN2 = Mod($StringSplit[1] + $StringSplit[2] + $StringSplit[3] + $StringSplit[4] + _ $StringSplit[5] + $StringSplit[6] + $StringSplit[7] + $StringSplit[8] + $StringSplit[9] + $FoundN1,10) MsgBox(64,"","TC Kimlik numarasının son iki rakamı=" & $FoundN1 & $FoundN2,0,$hwnd) Return $FoundN1 & $FoundN2 EndFunc[/codebox] Edited January 9, 2012 by blue_life Quote Link to comment Share on other sites More sharing options...
CaNCaN Posted January 9, 2012 Share Posted January 9, 2012 bende beceremedim Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.