1 program sujet3;
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
write(' Taper un numéro formée par 15 chiffres: ');
Lycée Pilote de Sousse
2 readln(Num);
until (length(Num)=15 )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)do begin
val (Num[i],x,e);
if(i mod 2=0) then begin x:=2*x;
if x>9 then x:=(x mod 10)+(x div 10);
end;
S:=S+x;
end;
somme:=S; writeln('S=',S);
end;
BEGIN repeat
saisie(Num) ;
if (somme(Num) mod 10 =0 ) then writeln(Num,' Est un numéro IMEI') Else writeln(Num,'N''est pas un numéro IMEI') ;
until keypressed;
END.
program bac;
uses wincrt;
type
tab=array[1..20]of integer;
var ch:string;
s:integer;
t:tab;
procedure saisie(var ch :string);
var p:real ; e:integer;
begin repeat
writeln('donner ch');
readln(ch);
val(ch,p,e);
until( length(ch)=15 )and (e=0);
end;
procedure traitement ( var t:tab ; ch:string;var s:integer);
var
Lycée Pilote de Sousse
3 i,j,x,a:integer;
begin
for i:=1 to 15 do begin
val(ch[i],x,a);
t[i]:=x;
end;
i:=2;
repeat t[i]:=2*t[i];
i:=i+2;
until i>15;
s:=0;
for j:=1 to 15 do begin
if (j mod 2 )=0 then begin
if t[j]>9 then
s:=s+(t[j]mod 10)+( t[j] div 10) else
s:=s+t[j];
end else s:=s+t[j];
end;
end;
begin saisie(ch);
traitement(t,ch,s);
if s mod 10 = 0 then writeln ('ce nbre est IMEI') else
writeln('ce nbre n''est pas IMEI');
end.
Lycée Pilote de Sousse