Sections : Math. + Tech. + Sc.Exp.
REPUBLIQUE TUNISIENNE MINISTERE DE L’EDUCATION
***
EPREUVE PRATIQUE D’INFORMATIQUE
DATE : Mardi 23 mai 2006 ( Heure : 15 :30h ) EXAMEN DU BACCALAUREAT
SESSION 2006 DUREE : 1 h – COEFFICIENT : 0.5
Sujet : Programmation en Pascal
Ecrire un programme Pascal qui permet de remplir deux tableau T1 et T2 de n entiers à deux chiffres chacun (2<=n<=15) puis de former un tableau T tel que un élément t[i] est le résultat de la fusion de deux élémentsT1[i] etT2[i] selon le principe suivant :
- Insérer le chiffre des dizaines du plus petit nombre parmi T1[i] et T2[i], entre les deux chiffres du plus grand nombre parmiT1[i] etT2[i].
- Mettre le chiffre des unités du plus petit nombre parmi T1[i] et T2[i], à droite du nombre obtenu.
Exemple :
- PourT1[i] = 52 et T2[i] = 36 ,T[i] sera égal à 5326 - PourT1[i] = 13 et T2[i] = 47 ,T[i] sera égal à 4173 On propose l’algorithme suivant :
0) début trait_tab 1) Répéter
Ecrire(" Donner un entier n"), lire (n) Jusqu’à n dans [2..15]
2) Procsaisie (n,T1) 3) Procsaisie (n,T2)
4) ProcFusion (n,T1,T2,T) 5) Pour i de 1 à n faire Ecrire (T[i]) Finpour
6) Fin trait_tab
Questions :
1. Traduire cet algorithme en Pascal.
2. Ecrire la procéduresaisie permettant de remplir un tableau T parn entiers à deux chiffres.
3. Ecrire procédure Fusion permettant de remplir un tableau T, à partir de deux tableauxT1 etT2 de n éléments chacun, selon le principe ci-dessus.
Enregistrer au fur et à mesure votre programme dans le dossier bac2006 situé à la racine C : en lui donnant comme nom le numéro de votre carte d’identité.
Grille d’évaluation :
Correction :
program trait_tab;
uses wincrt;
type
tab = array[1..15] of integer;
var
t,t1,t2 : tab;
n,i : integer;
procedure saisien (var n: integer);
begin repeat
writeln('donner un entier N'); readln(n);
until(n in [2..15]);
end;
procedure saisie( p : integer; var T:tab);
var i: integer;
begin
for i:= 1 to p do repeat
writeln('donner un entier numero ', i);
readln(T[i]);
until (T[i] in [0..99]);
end;
procedure fusion (N:integer; t1, t2: tab; var t:tab);
var
i,UMX,UMN,DMX,DMN, Min, Max : integer;
begin
for i:=1 to n do begin
if T1[i]>T2[i] then Max := T1[i]
else Max := T2[i];
Questions Nbre de points
Enregistrement dansbac2006 2
1. Traduction en Pascal
2. Ecriture de la procédure saisie 3. Ecriture de la procédure Fusion
6 4 8
if T1[i]<T2[i] then Min := T1[i]
else Min := T2[i];
UMX := Max mod 10;
DMX := Max div 10;
UMN := Min mod 10;
DMN := Min div 10;
T[i] := DMN*100 + UMN*1+DMX*1000+ UMX*10;
end;
end;
begin saisien(n);
saisie(N,T1);
saisie(N,T2);
fusion (N,T1,T2,T);
for i:= 1 to n do writeln (T[i]);
end.