TC Kimlik numaraları 11 basamaktan oluşmaktadır. İlk 9 basamak arasında kurulan bir algoritma bize 10. basamağı, 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 Mod 10’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.
Aşağıda C# Console uygulamasında yapılmış 2 farklı uygulamayı inceleyebilirsiniz.
1. Uygulama
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace TcUygulaması { class Program { static void Main(string[] args) { Console.Write("Tc Kimlik Noyu Giriniz:"); string tcNo = Console.ReadLine(); int toplam = 0; int toplam2 = 0; int toplam3 = 0; if (tcNo.Length == 11) { if (Convert.ToInt32(tcNo[0].ToString())!=0) //tc kimlik numaranın ilk hanesi 0 değilse { for (int i = 0; i < 10; i++) { toplam = toplam + Convert.ToInt32(tcNo[i].ToString()); if (i%2==0) { if (i!=10) { toplam2 = toplam2 + Convert.ToInt32(tcNo[i].ToString()); // 7 ile çarpılacak sayıları topluyoruz } } else { if (i!=9) { toplam3 = toplam3 + Convert.ToInt32(tcNo[i].ToString()); } } } } else { Console.WriteLine("Tc Kimlik Numaranızın ilk hanesi 0 olamaz."); } } else { Console.WriteLine("Tc Kimlik Numarınız 11 haneli olmak zorunda.Eksik ya da fazla değer girdiniz."); } if (((toplam2*7)-toplam3)%10==Convert.ToInt32(tcNo[9].ToString()); toplam%10==Convert.ToInt32(tcNo[10].ToString())) { Console.WriteLine("Tc Kimlik Numarası Doğru."); } else { Console.WriteLine("Tc Kimlik Numarası Yanlış!"); } Console.ReadKey(); } } } |
2. Uygulama
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | class Program { static void Main(string[] args) { string tcKimlikNo = Console.ReadLine(); 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); } if (returnvalue) Console.WriteLine("Doğru"); else Console.WriteLine("Yanlış"); Console.ReadKey(); } } |
2- TCKimlikNOclassı
• T.C. kimlik numaraları 11 hanedir ve tamamı rakamsal değerlerden oluşur.
• T.C. kimlik numarasının ilk hanesi sıfır(0) olamaz.
• 1. 3. 5. 7. ve 9. hanelerin toplamının 7 ile çarpımından 2. 4. 6. ve 8. haneler çıkartıldığında geriye kalan sayının 10′a göre modu bize 10. haneyi verir.
• 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. hanelerin toplamının 10′a göre modu bize 11. haneyi verir.
• Çift sayı olacak
Özellik :tcno
Davranışlar: TCNoUret() – random üret – kaç denemede TCno üretilmiştir.
TCNoKontrolET()
Bu Soruyu Yaparmısınız
Uygulamayı yaparken hangi değişkenleri kullanacağımız hakkında yardımcı olurmusunuz ? , 1 adet textbox ile 1 adet button ve sonucu gösterecek olan konsolumuz 1 adet te label olursa uygulama çalışırmı ?
Dediğiniz gibi çalışacaktır. Textbox’a girilen degeri string degiskene aktarip ayni işlemleri uygulayabilirsiniz.
public static bool TcKimliDogrula(string TcNo)
{
if (TcNo.Length < 11) return false; //tc kimlik numarası 11 Haneden Küçükse
int[] R = new int[TcNo.Length]; for (int i = 0; i < TcNo.Length; i++) R[i] = Convert.ToInt32(TcNo[i].ToString());
if (R[0] == 0) return false; //tc kimlik numaranın ilk hanesi 0 değilse
int Toplam1 = R[0] + R[2] + R[4] + R[6] + R[8]; // 7 ile çarpılacak sayıları topluyoruz
int Toplam2 = R[1] + R[3] + R[5] + R[7]; // 7 katından çıkarılacak sayıları topluyoruz
int Toplam3 = Toplam1 + Toplam2 + R[9];
if (((Toplam1 * 7) – Toplam2) % 10 == R[9] & Toplam3 % 10 == R[10]) return true;
return false;
}
sanki bu daha kolay gibi:)
Yorumunuz için teşekkürler.Tabi ki farklı yöntemlerle de yapılabilir.
hatalı çıkıyor