T.C. No algoritması onuncu hane bulunamama sorunu

bafralifatih55

Hectopat
Katılım
4 Aralık 2019
Mesajlar
402
Çözümler
2
Merhabalar arkadaşlar.

T.C. No kimlik numarası için Excel üzerinde bir deneme yapıyorum. Ancak aşağıdaki kuralda bir yanlışlık mı var çözemedim. Aşağıdaki formüle göre yapıyorum. Ancak formülün sonucu onuncu haneyi verir diyor ama vermiyor.

Bulduğum formül: Kimlik numarasının 1, 3, 5, 7, 9. hanelerinin toplamının 7 katından 2, 4, 6, 8. hanelerinin çıkartılıp 10’a bölümünden kalan (mod10) onuncu haneyi verir.

Bu konuda fikir beyan eden arkadaşlarıma şimdiden teşekkür ederim.
 
Son düzenleyen: Moderatör:
Merhabalar arkadaşlar.

T.C. No kimlik numarası için Excel üzerinde bir deneme yapıyorum. Ancak aşağıdaki kuralda bir yanlışlık mı var çözemedim. Aşağıdaki formüle göre yapıyorum. Ancak formülün sonucu onuncu haneyi verir diyor ama vermiyor.

Bulduğum formül: Kimlik numarasının 1, 3, 5, 7, 9. hanelerinin toplamının 7 katından 2, 4, 6, 8. hanelerinin çıkartılıp 10’a bölümünden kalan (mod10) onuncu haneyi verir.

Bu konuda fikir beyan eden arkadaşlarıma şimdiden teşekkür ederim.
Vallahi denedim şimdi ama 2 haneli sayı kaldı bende. Formul yanlış olabilir mi?
 
Kimlik numarasının 1, 3, 5, 7, 9. hanelerinin toplamının 7 katından 2, 4, 6, 8. hanelerinin çıkartılıp 10’a bölümünden kalan (mod10) onuncu haneyi verir.
Bu senin bulduğun bir şey değil. Kimlik numarası çıktığından beri buna göre veriliyor.

Ve yanlış da değil. Sen hata yapıyorsundur ya da işlem yaptığın numara gerçek bir kimlik numarası değildir.
 
Merhabalar arkadaşlar.

T.C. No kimlik numarası için Excel üzerinde bir deneme yapıyorum. Ancak aşağıdaki kuralda bir yanlışlık mı var çözemedim. Aşağıdaki formüle göre yapıyorum. Ancak formülün sonucu onuncu haneyi verir diyor ama vermiyor.

Bulduğum formül: Kimlik numarasının 1, 3, 5, 7, 9. hanelerinin toplamının 7 katından 2, 4, 6, 8. hanelerinin çıkartılıp 10’a bölümünden kalan (mod10) onuncu haneyi verir.

Bu konuda fikir beyan eden arkadaşlarıma şimdiden teşekkür ederim.
Burada yazmış belki işinize yarar.
 
Bu senin bulduğun bir şey değil. Kimlik numarası çıktığından beri buna göre veriliyor.

Ve yanlış da değil. Sen hata yapıyorsundur ya da işlem yaptığın numara gerçek bir kimlik numarası değildir.
Hocam şimdi dikkat ettim de, benim hatammış evet. Ben sonuca bakmışım, kalan doğru veriyor. 😂
Mod 10 ne demek öğrenin isterseniz. 2 basamaklı sayı kalması imkansız.
Bu kadar sinirli olmayın hocam, hata yapmışım.
 
Son hane hariç bütün rakamları toplarsanız çıkan sonucun birler basamağı son haneyi verir. Deneyebilirsiniz.
 
10. hane; Tek basamakların toplamının 7 katından, çift basamakların toplamını çıkardıktan sonra elde edilen sayının birler basamağı.

11. hane ise 10. basamak dahil tüm basamakların toplamının birler basamağı.

Java:
public static boolean isLegitTCNumber(String tcNumber)
    {
        int ten = -1;
        int eleven = -1;
        if (tcNumber.length() != 11)
        {
            return false;
        } else
        {
            short odds = 0;
            short evens = 0;
            for (int i = 0; i < 11; i++)
            {
                char chr = tcNumber.charAt(i);
                if ((byte) chr >= 48 && (byte) chr <= 57)
                {
                    if (i < 9)
                    {
                        int value = (byte) chr - 48;
                        if (i % 2 == 0)
                        {
                            //ODD
                            odds += value;
                        } else
                        {
                            //EVEN
                            evens += value;
                        }
                    }
                } else
                {
                    return false;
                }
            }
            //
            ten = (odds * 7 - evens) % 10;
            eleven = (odds + evens + ten) % 10;
            return (Character.getNumericValue(tcNumber.charAt(9)) ==
                    ten && Character.getNumericValue(tcNumber.charAt(10)) == eleven);
        }
    }
 
Boş vaktim vardı. İşsizliği döktürdüm. Ama seni de kanser etmek için dosyayı atmak yerine yazdığım şeyi atacağım.

Excel dosyası açıyoruz. A1 hücresine sen elinle kimlik numarasının 9 basamağını yazacaksın. B1 hücresine =MOD((TOPLA(MOD(A1;10);MOD(BÖLÜM(A1;100);10);MOD(BÖLÜM(A1;10000);10);MOD(BÖLÜM(A1;1000000);10);MOD(BÖLÜM(A1;100000000);10))*7)-(TOPLA(MOD(BÖLÜM(A1;10);10);MOD(BÖLÜM(A1;1000);10);MOD(BÖLÜM(A1;100000);10);MOD(BÖLÜM(A1;10000000);10);));10), C1 hücresine =A1*10+B1 ve D1 hücresine de =A1*100+B1*10+MOD(TOPLA(MOD(BÖLÜM(C1;1);10);MOD(BÖLÜM(C1;10);10);MOD(BÖLÜM(C1;100);10);MOD(BÖLÜM(C1;1000);10);MOD(BÖLÜM(C1;10000);10);MOD(BÖLÜM(C1;100000);10);MOD(BÖLÜM(C1;1000000);10);MOD(BÖLÜM(C1;10000000);10);MOD(BÖLÜM(C1;100000000);10);MOD(BÖLÜM(C1;1000000000);10));10) yazıyorsun. Bunları yazdığında zaten başta A1 hücresine yazdığın 9 basamağın geri kalanını D1 hücresinde göreceksin.
 

Geri
Yukarı