1
program sujet4;
uses wincrt;
var
Num:string;
function verif(Num:string):boolean;
var i:integer;
rep:boolean;
begin
i:=0; REP:=true;
repeat i:=i+1;
if Not(Num[i] in['0'..'9'])then rep:=false;
until (rep=false)or(i=length(Num));
verif:=rep;
end;
procedure saisie ( var num :string);
begin repeat
Lycée Pilote de Sousse
2
write(' Taper un numéro formée par 13 chiffres: ');
readln(Num);
until (length(Num)=13 )and (verif(Num));
end;
function Somme(Num:string):integer;
var
x,e,y,s,i:integer;
begin s:=0;
for i:=1 to length(Num)-1do begin
val (Num[i],x,e);
if(i mod 2=0) then begin x:=3*x;
end;
S:=S+x;
end;
somme:=S; writeln('S=',S);
end;
Function tester (Num:string):boolean;
var p,r,x,e,s:integer;
begin
s:=somme(Num);
r:=s mod 10;
p:=10-r;
val(Num[13],x,e);
tester:=(p=x);
end;
BEGIN
SAISIE(Num);
if tester(Num) then writeln('Code EAN13') else writeln('n''est pas un code EAN13');
END.
Lycée Pilote de Sousse