P a g e |1
Lycée Pilote de Sousse
Devoir de Contrôle N° 1
Année scolaire : 2013/2014
Matière : Informatique
Durée : 1HMr. Med Abdallah Mani
Classe : 4ième MathNom & Prénom : ………. Note : ……. / 20
Soit T un tableau contenant N chaînes formées par des lettres alphabétiques et V un tableau contenant M entiers > 0 avec N et M sont compris entre 3 et 20.
On se propose d’afficher les chaines symétriques dans T et les non symétriques dans V.
Exemple :
Une chaîne symétrique :ELLe, radAR
Un Entier non symétrique : 12345, 11215, 6696 Correction
program symetrique;
uses wincrt ;
typetab=array [1..30]of string;
vab=array [1..30]of integer;
vart:tab;
v:vab;
n,m,i,j:integer;
ch:string;
b,verif:boolean;
begin
{*** Lecture de N ***}
repeat
writeln ('donner la valeur n ');
readln (n);
until (n>=3)and (n<=20);
{*** Lecture de M ***}
repeat
writeln ('donner la valeur m ');
readln (m);
until (m>=3)and (m<=20);
{*** Remplissage de T ***}
for i:=1 to n do repeat
writeln ('donner t[',i,']');
readln (t[i]);
j:=0 ; ch:=t[i];
repeat j:=j+1;
b:=upcase(ch[j]) in ['A'..'Z'] ; until not (b) or (j=length (ch));
until b;
{*** Remplissage de V ***}
program symetrique;
uses wincrt ;
typetab=array [1..30]of string;
vab=array [1..30]of integer;
vart:tab;
v:vab;
n,m,i:integer;
ch:string;
Procedure lecture (var n,m:integer);
begin
{*** Lecture de N ***}
repeat
writeln ('donner la valeur n ');
readln (n);
until (n>=3)and (n<=20);
{*** Lecture de M ***}
repeat
writeln ('donner la valeur m ');
readln (m);
until (m>=3)and (m<=20);
end;
Function verif(ch:string):boolean;
varj:integer;
b:boolean;
begin j:=0 ;
repeat j:=j+1;
b:=upcase(ch[j]) in ['A'..'Z'] ; until not(b) or (j=length (ch));
verif:=b;
end;
Function sym(ch:string):boolean;
P a g e |2 for i:=1 to m do
repeat
writeln ('donner v[',i,']');
readln (v[i]);
until (v[i]>0);
{*** Affichage Chaine symetrique ***}
writeln ('les chaines symetrique dans t sont:');
for i:=1 to n do begin
j:=0;
ch:=t[i];
repeat j:=j+1;
b:= upcase(ch[j])=upcase(ch[length(ch)- j+1]);
until not (b) or (j=length(ch)div 2) ; if b then write(t[i],' | ');
end;writeln;
{*** Affichage Entier Non symetrique ***}
writeln ('les nombres non symetriques sont')
;
for i:=1 to m do begin
j:=0;
str(v[i],ch);
if length(ch)>1 then begin
repeat j:=j+1;
b:= upcase (ch[j])=upcase(ch[length (ch)- j+1]);
until not (b) or (j=length (ch)div 2) ; if b=false then write(v[i],' | ');
end;end;
end.
varj:integer;
b:boolean;
begin j:=0;
repeat j:=j+1;
b:= upcase(ch[j])=upcase(ch[length(ch)- j+1]);
until not (b) or (j=length(ch)div 2) ; sym:=b;
end;
begin
lecture(n,m);
{*** Remplissage de T ***}
for i:=1 to n do repeat
writeln ('donner t[',i,']');
readln (t[i]);
until verif(t[i]);
{*** Remplissage de V ***}
for i:=1 to m do repeat
writeln ('donner v[',i,']');
readln (v[i]);
until (v[i]>0);
{*** Affichage Chaine symetrique ***}
writeln ('les chaines symetrique dans t sont:');
for i:=1 to n do
if sym(t[i]) then write(t[i],' | ');
writeln;
{*** Affichage Entier Non symetrique ***}
writeln ('les nombres non symetriques sont')
;
for i:=1 to m do begin
str(v[i],ch);
if (length(ch)>1) and (not(sym(ch))) then write(v[i],' | ');
end;
end.