Sie sind auf Seite 1von 4

Lycée Pilote de Sousse Année scolaire : 2011/2012

Matière : Informatique Devoir de Synthèse Durée : 1H


Mr. Med Abdallah Mani N° 2 Classe : 4 Tech
Nom & Prénom : ……………………………………………………. Note : ……. / 20
Exercice 1. (3.5 pts)
Soit l’algorithme suivant :

0) Debut devoir
1) Lire(n)
2) Convch(N,ch)
3) Pour i de 1 à long(ch) DIV 2 faire
C  ch[i]
Ch[i]  ch[long(ch)-i+1]
ch[long(ch)-i+1]  c
FinPour
4) Valeur(ch,n,e)
5) Ecrire(n)
6) Fin Devoir

1. Exécuter l’algorithme précédent pour N=3247


…………………………………………………7423……………………………………………………………………
2. Donner le rôle de l’algorithme
……………………………Afficher le nombre miroir d’un nombre (inverse)…………………
3. Transformer l’instruction n°3 en remplaçant la boucle POUR par la structure
Répéter … Jusqu’à.
i1 i:=1;
Répéter repeat
C  ch[i] C := ch[i];
Ch[i]  ch[long(ch)-i+1] Ch[i] := ch[length(ch)-i+1];
ch[long(ch)-i+1]  c ch[length(ch)-i+1] := c ;
i i+1 i:=i+1;
jusqu’à (i> long(ch) DIV 2) until(i>length(ch) DIV 2);
Exercice 2. (2.5 pts)
Compléter le tableau suivant par les entêtes des modules (analyse Procédure ou Fonction) :

Actions Entêtes des modules


Trier un tableau T de n chaînes par ordre Def proc tri (var t :tab ;n :entier)
alphabétiques
Eclater un tableau T de n entiers en deux Def proc eclat (t :tab ;var
tableaux T1 contenant les entiers positifs et t1,t2 :tab ;n :entier ;var n1,n2 :entier)
T2 contenant les entiers négatifs
Déterminer la position du minimum d’un Def fn min(t :tab ;n :entier) :entier
tableau de n réels
Inverser l’ordre des éléments d’un tableau T Def proc inv(var t :tab ; n :entier)
de n caractères
Vérifier si un tableau T de n entiers est Def fn symet(t :tab ;n :entier) :booleen
symétrique ou non
Problème. (14 pts)
On désire résoudre un problème qui permet :

 Saisir un tableau T de N chaînes avec 2≤N≤20 et la taille de la chaîne entre 2 et 10


caractères
 Remplir un deuxième tableau V par le nombre de caractères non alphabétiques dans
chaque case
 Trier le tableau T dans l’ordre croissant selon le tableau V
 Afficher le(s) mot(s) contenant le plus grand nombre de caractères non
alphabétiques
Exemple :
Pour N=5 et T contenant :
A5+M+2 ScO@p* BAC 12*0 T*ech*/
On obtient le tableau V suivant :
4 2 0 4 3
Après le tri de T selon le tableau V on obtient :
BAC ScO@p* T*ech*/ 12*0 A5+M+2
0 2 3 4 4
Le(s) mot(s) contenant le plus grand nombre de caractères non alphabétiques :
A5+M+2
12*0
1. Analyser le programme principal en le décomposant en modules.
2. Analyser chacun des modules envisagés
3. Déduire l’algorithme de programme principal ainsi que celui d’un module
de votre choix.
program devoir;
uses wincrt;
type
tabc=array [1..20] of String;
tab=array[1..20] of integer;
var
t:tabc;
v:tab;
n,i:integer;
procedure saisie (var ft:tabc;var fn:integer);
var i:integer;
begin
repeat
writeln('Donner la taille du tableau:');
readln(fn)
until (n in [2..20]);
for i:=1 to n do
repeat
writeln('Donner une chaine n° ',i,':');
readln(ft[i]);
until (length(ft[i]) in [2..10]);
end;
procedure remplir(ft:tabc;var fv:tab;fn:integer);
var c,j,i:integer;
ch:string;
begin
for i:=1 to n do
begin
fv[i]:=0;
ch:=ft[i];
c:=length(ch);
for j:=1 to length(ch) do
if ch[j] in ['A'..'z'] then
c:=c-1;
fv[i]:=c;
end;
end;
Procedure permuter( var a:integer; var b:integer);
Var
p : integer;
begin
p:=a;
a:=b;
b:=p;
end;
procedure tri(var ft:tabc;var fv:tab;fn:integer);
var
i,j,pmin:integer;
ch:string;
begin
for i:=1 to n-1 do
begin
pmin:=i;
for j:=i+1 to n do
if fv[j]<fv[pmin] then pmin:=j;
if i<>pmin then
begin
permuter(fv[i],fv[pmin]);
ch:=ft[i] ;
ft[i]:=ft[pmin];
ft[pmin]:=ch;
end;
end;
end;
procedure affiche (ft:tabc;fv:tab;fn:integer);
var i,max:integer;
begin
max:=fv[fn];
i:=fn;
while fv[i]=max do
begin
writeln(ft[i]);
i:=i-1;
end;
end;
begin
saisie(t,n);
remplir(t,v,n);
tri(t,v,n);
for i:=1 to n do
write (t[i],'|');
writeln;
for i:=1 to n do
write (v[i],'|');
writeln;
Affiche(t,v,n);
end.