Lycée Pilote de Sousse
Devoir de Contrôle N° 2
Année scolaire : 2012/2013
Matière : Informatique Durée : 1H
Mr. Med Abdallah Mani Classe : 4 Math4
Nom & Prénom : ………. Note : ……. / 20
Ecrire un programme Pascal qui permet de remplir T un tableau contenant N chaines formées par des lettres alphabétiques majuscules chacune commençant par une lettre de la chaine qui la précède et N est un nombre pair compris entre 4 et 20 et qui permet d’afficher les chaines symétriques dans le tableau T.
Pour N=6 T
AVIVA VARGAS SONOS OMO MONDO MALAYALAM
1 2 3 4 5 6
Alors le résultat afficher et le suivant :
AVIVA SONOS OMO MALAYALAM
program symm;
uses wincrt ;
var t:array [1..20]of string;
n,i:integer;
ch:string;
function verif(ch:string):boolean;
var i:integer;
b:boolean;
begin i:=0 ; repeat i:=i+1;
b:=ch[i] in ['A'..'Z'] ;
until not (b) or (i=length (ch));
verif:=b;
end;
function exist (c:char;ch:string):boolean;
var i:integer;
b:boolean;
begin b:=false;
i:=0;
repeat i:=i+1;
if ch[i]=c then b:=true;
until (b) or (i=length(ch));
exist:=b;
end;
function sym(ch:string):boolean ; var b: boolean;
i:integer;
begin i:=0;
repeat i:=i+1;
b:= upcase (ch[i])=upcase(ch[length (ch)-i+1]);
until not (b) or (i=length (ch)div 2) ; sym:=b ;
end;
begin
repeat
writeln ('donner la valeur n ');
readln (n);
until (n in [4..20]) and (n mod 2 =0);
REPEAT
writeln ('Donner T[1]');
readln (t[1]);
UNTIL verif(T[1]);
for i:=2 to n do repeat
writeln ('Donner T[',i,']');
readln (t[i]);
until (verif(t[i])) and exist(t[i][1],t[i-1]);
write ('les chaines symetrique dans t sont:');
for i:=1 to n do end.
Lycée Pilote de Sousse
Devoir de Contrôle N° 2
Année scolaire : 2012/2013
Matière : Informatique Durée : 1H
Mr. Med Abdallah Mani Classe : 4 Math4
Nom & Prénom : ………. Note : ……. / 20
Ecrire un programme Pascal qui permet de remplir T un tableau contenant N caractères majuscules d'une manière aléatoire et sans doublons sachant que N est un nombre impair compris entre 3 et 20 puis permet d'afficher que les lettres consonnes triées d'une manière croissante.
Pour N=11 T
A X V E C N O Z I M T
1 2 3 4 5 6 7 8 9 10 11
Alors le résultat afficher et le suivant :
C M N T V X Z
1 2 3 4 5 6 7
program devoir;
uses wincrt;
type
tab=array [1..20] of char;
var t,tc:tab;
i,n,nc:integer;
procedure affiche (tc:tab;nc:integer);
var i:integer;
begin
for i:=1 to nc do write(tc[i],' | ');
writeln;
end;
function exist (t:tab;p:integer):boolean;
var i:integer;
b:boolean;
begin b:=false;
i:=0;
repeat i:=i+1;
if t[i]=t[p] then b:=true;
until (b) or (i=p-1);
exist:=b;
end;
procedure remplir(var t :tab; var n:integer);
var i:integer;
begin randomize;
repeat
writeln('Donner N impair entre 3 et 20');
readln(n);
until (n mod 2 =1) and (n in [3..20]);
t[1]:=chr(random(26)+ord('A'));
i:=1;
for i:=2 to n do repeat
t[i]:=chr(random(26)+ord('A'));
until exist(t,i)=false;
affiche(t,n);
end;
procedure extract (t:tab;n:integer; var tc:tab; var nc:integer);
var i:integer;
begin NC:=1;
for i:=1 to n do
if not (t[i] in ['A','E','U','I','O','Y']) then begin
tc[nc]:=t[i];
nc:=nc+1;
end;
nc:=nc-1;
end;
Procedure permuter( var a:char; var b:char);
Var p : char;
begin p:=a;
a:=b;
b:=p;
end;
Procedure tri(var Tc:tab; nc:integer);
var
i,j,pmin:integer;
begin
for i:=1 to nc-1 do begin
pmin:=i;
for j:=i+1 to nc do
if tc[j]<Tc[pmin] then pmin:=j;
if i<>pmin then
permuter(Tc[i],Tc[pmin]);
end;
end;
begin remplir(t,n);
extract(t,n,tc,nc);
tri(tc,nc);
affiche (tc,nc);
end.