T.C. Kimlik numaraları verilirken çok gelişmiş bir algoritma kullanılıyor. Dileyen arama motorlarından aratarak detaylı bilgi sahibi olabilir. ben aşağıdaki iki algoritma ile küçük bir program yapıp kullanıcıdan alınan T.C. Kimlik numarasını doğrulayan basit bir program yapmak istedim sadece. İnşallah bir hata yoktur.
**
1= 1,3,5,7,9. hanelerin toplamının 7 ile çarpımından 2,4,6,8. hanelerin toplamı çıkartılır ve sonucun 10'a bölümünden kalan bize 10. haneyi verir,
2= 1,2,3,4,5,6,7,8,9,10. hanelerin toplamının 10'a bölümünden kalan ise 11. haneyi verir.
**
public class Program
{
public static void Main()
{
Console.Write("T.C. Numaranınızı 11 Hanel Olacak Şekilde Giriniz: ");
string TC = Console.ReadLine();
bool aa,ab= false;
aa=algoritma1(TC);
ab=algoritma2(TC);
string sonuc1="Hatalı";
if (aa && ab)
{
sonuc1="Doğru";
}
Console.Write("Girilen T.C. Kimlik Numarası {0}", sonuc1);
}
public static bool algoritma1(string Tcno)
{
bool a1=false;
string[] hane=new string[11];
int sayac=0;
foreach (var h in Tcno)
{
hane[sayac]=Convert.ToString(h);
sayac++;
}
int tek=0;
int cift =0;
for (int i=0; i<5; i++) {
tek+=Convert.ToInt32(hane[i]);
}
for (int j=1; j<8; j+=2)
{
cift+=Convert.ToInt32(hane[j]);
}
if (Convert.ToString(((tek*7)-(cift))%10)==Convert.ToString(hane[6]))
{
a1=true;
}
return a1;
}
public static bool algoritma2(string Tcno)
{
bool a2=false;
string[] hane=new string[11];
int sayac=0;
int toplam=0;
foreach (var h in Tcno)
{
hane[sayac]=Convert.ToString(h);
sayac++;
}
for (int i=0;i<10;i++)
{
toplam+=Convert.ToInt32(hane[i]);
}
if (Convert.ToString(toplam % 10)==Convert.ToString(hane[10]))
{
a2=true;
}
return a2;
}
}