Sections : Math. + Tech. + Sc.Exp.
REPUBLIQUE TUNISIENNE MINISTERE DE L’EDUCATION
***
EPREUVE PRATIQUE D’INFORMATIQUE
DATE : Lundi 22 mai 2006 ( Heure : 15h :30 ) EXAMEN DU BACCALAUREAT
SESSION 2006 DUREE : 1 h – COEFFICIENT : 0.5
Sujet : Programmation en Pascal
Ecrire un programme Pascal qui permet de saisir n entiers dans un tableau T (10<n<40) et deux entiers non nulsp ets (p ets doivent être des éléments deT).
On demande d’afficher tous les blocs d’éléments de T placés entre p et s dans l’ordre ;p ets peuvent figurer dans cet ordre plusieurs fois dans T.
Exemple : Si p = 5 et s = 3
Et si on donne le tableau T suivant :
7 5 0 2 3 9 1 5 6 3
Alors le résultat de l’affichage sera : 0 2 6 N.B :
La solution doit comporter au moins deux modules.
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 :
Questions Nbre de points
Enregistrement dansbac2006 2
Si exécution correcte avec les modules demandés Sinon
Si exécution correcte sans modules Sinon
Syntaxe et vocabulaire
Structures de données relatives au problème Structures de contrôles relatives au problème Modularité
18 14 5 4 5 4
Correction :
program sequence_p_s;
uses wincrt;
type tab=array[1..100] of integer;
var
n:integer;
t:tab;
procedure saisiet(var t:tab;var n:integer);
var i:integer;
begin repeat
write ('Donner la taille du tableau');
readln(n);
until n in [11..39];
for i:=1 to n do begin
writeln('T[',i,']= '); readln(T[i]);
end;
end;
function existe(t:tab;n,p:integer):boolean;
var i:integer;
begin i:=0;
existe:=false;
repeat i:=i+1;
until (t[i]=p) or (i=n);
if t[i]=p then existe:=true;
end;
Procedure sequence( t:tab; n:integer);
var
i,j,p,s:integer;
begin repeat write('p=');
readln(p);
until (p<>0) and existe (t,n,p);
repeat write('s=');
readln(s);
until (s<>0) and existe (t,n,s);
for i:= 1 to n-1 do begin
if t[i]=p then begin j:=i+1;
while (t[j]<>s) do begin
write(t[j],' ');
j:=j+1;
end;
end;
end;
end;
begin saisiet(t,n);
sequence(t,n);
end.