for (int a1 = 1; a1 < 10; a1++)
for (int a2 = 0; a2 < 10; a2++)
for (int a3 = 0; a3 < 10; a3++)
for (int a4 = 0; a4 < 10; a4++)
for (int a5 = 0; a5 < 10; a5++)
for (int a6 = 0; a6 < 10; a6++)
for (int a7 = 0; a7 < 10; a7++)
for (int a8 = 0; a8 < 10; a8++)
for (int a9 = 0; a9 < 10; a9++)
{
int tekBasamaklar = a1 + a3 + a5 + a7 + a9;
int ciftBasamaklar = a2 + a4 + a6 + a8;
int t1 = (tekBasamaklar * 3) + ciftBasamaklar;
int c1= (10 - (t1 % 10)) % 10;
int t2 = c1 + ciftBasamaklar;
int t3 = (t2 * 3) + tekBasamaklar;
int c2 = (10 - (t3 % 10)) % 10;
string tc = String.Format("{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}", a1, a2, a3, a4, a5, a6, a7, a8, a9, c1, c2);
Console.WriteLine(tc);
}
ya da bu algoritmayla biraz daha oynayıp şu şekilde işler yapabilirsiniz:
/// Girilen 9 basamaklı sayının son iki basamağını bulup TC Kimlik No oluşturur
string tc = Console.ReadLine();
int[] digit = new int[9];
for (int i = 0; i < 9; i++)
digit[i] = Convert.ToInt32(tc.Substring(i, 1));
int tekBasamaklar = digit[0] + digit[2] + digit[4] + digit[6] + digit[8];
int ciftBasamaklar = digit[1] + digit[3] + digit[5] + digit[7];
int t1 = (tekBasamaklar * 3) + ciftBasamaklar;
int c1 = (10 - (t1 % 10)) % 10;
int t2 = c1 + ciftBasamaklar;
int t3 = (t2 * 3) + tekBasamaklar;
int c2 = (10 - (t3 % 10)) % 10;
string result = String.Format("{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}", digit[0], digit[1], digit[2], digit[3], digit[4], digit[5], digit[6], digit[7], digit[8], c1, c2);
Console.WriteLine(result);
Güzel Bir Algoritma
YanıtlaSil