Proste zadanie w pascalu, co z nim źle?


(T Karol) #1

Siemka, tu macie zadanie:

1261. Pesel

Kod zadania: JPESEL


Jan Kowalski musi wpisać do systemu szpitalnego dane osobowe pacjenta, oprócz imienia i nazwiska musi również wpisać PESEL pacjenta. Jakież było jego zdziwienie, gdy spostrzegł, że pewnych pacjentów system nie przyjmował z powodu wadliwego PESELu.


Twoim zadaniem jest sprawdzenie, czy podana liczba 11-cyfrowa jest poprawnym PESELem.


Aby sprawdzić czy dany PESEL jest prawidłowy należy wykonać następujące działania:


Pierwszą cyfrę mnożymy przez 1,

drugą cyfrę mnożymy przez 3,

trzecią cyfrę mnożymy przez 7,

czwarta cyfrę mnożymy przez 9,

piątą cyfrę mnożymy przez 1,

szóstą cyfrę mnożymy przez 3,

siódmą cyfrę mnożymy przez 7,

ósmą cyfrę mnożymy przez 9,

dziewiątą cyfrę mnożymy przez 1,

dziesiątą cyfrę mnożymy przez 3,

jedenastą cyfrę mnożymy przez 1.


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


4*1 + 4*3 + 0*7 + 5*9 + 1*1 + 4*3 + 0*7 + 1*9 + 4*1 + 5*3 + 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 PESELjest poprawny lub N, gdy nie.

Example


Input:

2

44051401458

12345678901


Output:

D

N

A tu to co udało mi się napisać, myślę, że program powinien działać ale jest problem, jeżeli wpiszę najpierw dobry pesel to wyskakuje "D", a potem jak napiszę zły pesel to również wyskakuje "D" chociaż powinno wyskoczyć "N". Jednak jeżeli (w nowym programie) najpierw wpiszę zły pesel to wyskakuje prawidłowo "N" i jak w następnym zestawie napiszę dobry pesel to wyskakuje również prawidłowo "D". Mam nadzieję że mnie zrozumieliście, pomożecie ??

program pesel;

var a,b,c,x,d,e,f,g,h,i,j,k,l,m,n,o:integer;

    tab:array[1..11] of char;



begin


readln(n);

for o:=1 to n do

begin



  for l:=1 to 11 do

     begin

     read(tab[l]);

     end;


  a:=ord(tab[1]);

  b:=ord(tab[2]);

  c:=ord(tab[3]);

  d:=ord(tab[4]);

  e:=ord(tab[5]);

  f:=ord(tab[6]);

  g:=ord(tab[7]);

  h:=ord(tab[8]);

  i:=ord(tab[9]);

  j:=ord(tab[10]);

  k:=ord(tab[11]);




  b:=b*3;

  c:=c*7;

  d:=d*9;

  f:=f*3;

  g:=g*7;

  h:=h*9;

  j:=j*3;


  m:=a+b+c+d+e+f+g+h+i+j+k;


  x:=m mod 10;

  if x=0 then writeln('D') else writeln('N');


end;


end.

(Murzyn1) #2

Zadań ze spoj'a nie rozwiązujemy :wink: