Program S14;
Type
Tab = array[1..10] Of string;
Var
n,i : integer;
Pub, code : Tab;
//********************************
Function verif(ch:String) : boolean;
Var
b : boolean;
x,y,e : integer;
Begin
If length(ch)<>14 Then
verif := false
Else
Begin
b := (pos('ISSN ',ch)=1) And (pos('-',ch)=10);
val(copy(ch,6,4),x,e);
If ch[14]='X' Then
val(copy(ch,11,3),y,e)
Else
val(copy(ch,11,4),y,e);
verif := b And (x>0)And(y>0);
End;
End;
//********************************
Procedure Remplir(Var Pub, code:Tab; n:integer);
Var
i : integer;
Begin
For i:=1 To n Do
Begin
write('Pub[',i,']=');
readln(Pub[i]);
Repeat
write('Code[',i,']=');
readln(Code[i]);
Until verif(Code[i]);
End;
End;
//********************************
Function authentique(ch:String) : boolean;
Var
a : longint;
e,n,r : integer;
Begin
val(copy(ch,6,4)+copy(ch,11,3),a,e);
val(ch[14],n,e);
If ch[14]='X' Then
n := 10;
r := a Mod 11;
authentique := r=n;
End;
//********************************
Begin
Repeat
write('Saisir le nombre de publications à vérifier :');
readln(n);
Until n In [1..10];
remplir(Pub, code, N);
For i:=1 To n Do
If ( authentique (Code[i])) Then
writeln (Pub[i]);
End.
Inscription à :
Publier les commentaires (Atom)