Sprawdzenie, czy podana liczba 11-cyfrowa jest poprawnym PESELem.

0

Tak uzyskane 11 iloczynów dodajemy do siebie. Jeśli ostatnia cyfra tej sumy jest zerem to podany PESEL jest prawidłowy. Przykład dla numeru PESEL 44051401458

41 + 43 + 07 + 59 + 11 + 43 + 07 + 19 + 41 + 53 + 8*1 = 4 + 12 + 0 + 45 + 1 + 12 + 0 + 9 + 4 + 15 + 8 = 110

Źródło: www.wikipedia.pl

Jeśli suma jest większa od zera, wtedy sprawdzamy jej poprawność. W przeciwnym przypadku nr PESEL jest błędny. Ponieważ ostatnia cyfra liczby 110 jest zerem więc podany PESEL jest prawidłowy.

Na wejściu podana jest w pojedyńczej linii ilość t<=100 numerów PESEL do sprawdzenia. W kolejnych t liniach są 11-cyfrowe liczby.
Output

W pojedyńczej linii powinna zostać wyświetlona litera D, jeśli numer PESEL jest poprawny lub N, gdy nie.
Example

Input:
2
44051401458
12345678901

Output:
D
N

    include<stdio.h>



int main()
{
int test,suma, i;
char* pesel;
scanf("%d",&test);

for(i=0;i<test;i++)
{
scanf("%d",&suma);

if(suma%10 == 0)

suma=(int)pesel[0];
suma+=(int)pesel[1] * 3;
suma+=(int)pesel[2] * 7;
suma+=(int)pesel[3] * 9;
suma+=(int)pesel[4];
suma+=(int)pesel[5] * 3;
suma+=(int)pesel[6] * 7;
suma+=(int)pesel[7] * 9;
suma+=(int)pesel[8];
suma+=(int)pesel[9] * 3;
suma+=(int)pesel[10];


printf("D\n");

 }

 printf("N");
return 0;
}

I wychodzi w pierwszym D a w drugim niestety D N . Czyli coś jest zrobione źle z pętlą?...

0

teraz lepiej? sorki.

0

Kod jest totalnie błędny. Zmienna pesel nie jest nigdzie inicjowana. Najprościej wczytać PESEL do tablicy char i każdy znak zamienić na cyfrę i na takiej tablicy wykonać obliczenia.

0

wczytanie znaków do tablicy możesz zrobić z pomocą scanf

char pesel[12] = { 0 };
scanf("%11s", pesel);

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.