Vous êtes sur la page 1sur 4

Bac pratique informatique 2013

Correction Proposée par Mr Najeh SOUGUIR


Section Math & Sciences & Techniques -Sujet 27 mai 2013 - 8h

program Lundi_27_mai_2013_8h ; end;


uses wincrt ;
type tab1= array[1..100] of string[8]; procedure remplir_scr (var S:tab2;n:integer);
tab2= array[1..100] of integer; var i:integer;
var n:integer; begin
matricule:tab1; for i:=1 to n do
score:tab2; repeat
write ( 'donne le score n° ',i,': ');
procedure saisie (var n :integer ); readln (S[i]);
begin until s[i] in [20..120];
repeat end ;
writeln ('Donner un entier ;');
readln (n) ; procedure tri(var M:tab1;var S:tab2;n:integer);
until n in [5..100] ; var i,j,x2:integer;
end ; x1:string;
begin
function verif (ch:string):boolean ; for i:=2 to n do
var i:integer ; begin
begin x1:=M[i];
verif:= true ; x2:=S[i];
for i :=1 to length (ch) do j:=i;
if not (ch[i] in ['0'..'9'])then while (S[j-1]<x2) and (j>1) do
verif:= false; begin
end; S[j]:=S[j-1];
M[j]:=M[j-1];
function existe(T:tab1;E:string;X:integer):boolean; j:=j-1;
var j:integer; end;
begin M[j]:=x1;
j:=0 ; S[j]:=x2;
repeat end;
j:=j+1; end;
until(j=X) or (T[j]=E);
existe:=(T[j]=E); Procedure affichage(M:tab1;n:integer);
end; var i,nb:integer;
begin
Procedure remplir_mat(var M:tab1;n:integer); nb:=round(n*0.25);
var i:integer; writeln ('La liste des admis : ');
begin for i:=1 to nb do
Devoirs et examens sur : www.kiteb.net

repeat writeln(M[i]);
write('Donner la matricule n° 1: '); end;
readln(M[1]);
until (verif(M[1])) and (length(M[1])=8); {Programme principal}
for i:=2 to n do begin
repeat saisie (n);
write('Donner la matricule n° ',i,': '); remplir_mat(matricule,n);
readln(M[i]); remplir_scr(score,n);
until (verif(M[i])) and (length(M[i])=8)and tri(matricule,score,n);
(existe(M,M[i],i-1) = false); affichage(matricule,n);
{ La fonction existe est utilisée pour éviter la end.
répétition des matricules}
Bac pratique informatique 2013
Correction Proposée par Mr Najeh SOUGUIR
Section Math & Sciences & Techniques -Sujet 27 mai 2013 - 9h30

program Lundi_27_mai_2013_9h30 ;
uses wincrt ; function verif2(T:tab;n:integer): boolean;{vérifier si
T[i]<>i}
type tab= array[1..20] of integer;
var i:integer;
var n:integer;
begin
T:tab;
verif2:=true;
procedure saisie(var T:tab; var n:integer);
for i:=1 to n do
var i:integer;
if T[i]=i then verif2:=false;
begin
end;
repeat
writeln ('Donner un entier ;');
function verif3(T:tab;n:integer): boolean;{vérifier si
readln (n) ;
toutes les valeurs de 1 à N se trouvent dans T}
until n in [5..20] ;
var i:integer;
for i:=1 to n do
begin
repeat
verif3:=true;
write('Donner l"élément n° ',i,': ');
for i:=1 to n do
readln(T[i]);
if existe(T,i,n) = false then verif3:=false;
until T[i] >=0;
end;
end;

{Programma principal}
function existe(T:tab;E,X:integer):boolean;
begin
var j:integer;
saisie(T,n);
begin
if (verif1(T,n)) and (verif2(T,n))and (verif3(T,n)) then
j:=0 ;
write(' Le tableau T est un dérangement')
repeat
else
j:=j+1;
write(' Le tableau T n"est pas un dérangement');
until(j=X) or (T[j]=E);
end.
Devoirs et examens sur : www.kiteb.net

existe:=(T[j]=E);
end;

function verif1(T:tab;n:integer): boolean; {vérifier si


T[i]<=N}
var i:integer;
begin
verif1:=true;
for i:=1 to n do
if T[i]>n then verif1:=false;
end;
Bac pratique informatique 2013
Correction Proposée par Mr Najeh SOUGUIR
Section Math & Sciences & Techniques -Sujet 27 mai 2013 - 11h

program program Lundi_27_mai_2013_11h ; begin


uses wincrt ; n:=n+inverse(n);
type tab= array[1..10] of integer; nb:=nb+1;
var n,nb:integer; T[nb]:=n ;
T:tab; end;
until (ok=true) or (nb>10);
Procedure saisie(var n:integer); end;
var i:integer;
begin Procedure affichage (T:tab; n,nb:integer);
repeat var i:integer;
writeln ('Donner un entier ;'); begin
readln (n) ; if nb>10 then
until n >=10 ; write('Le calcul de 11 termes ne donne pas une suite
end; palindromique pour ce nombre')
else
Function palindrome(n:integer):boolean; begin
var i:integer; for i:=1 to nb-1 do
ch : string; write(T[i],', ');
begin write(T[nb],' : Cette suite est palindromique');
STR(n,ch); end;
palindrome:=true; end;
for i:=1 to length(ch) div 2 do
if ch[i]<>ch[length(ch)-i+1] then {Programma principal}
palindrome:= false; begin
end; saisie(n);
liste(T,n,nb);
Function inverse(n:integer):integer; affichage(T,n,nb);
var i,d,e:integer; end.
ch:string;
x:char;
begin
STR(n,ch);
for i:= 1 to length(ch)div 2 do
begin
x:=ch[i];
ch[i]:=ch[length(ch)-i+1];
ch[length(ch)-i+1]:=x;
end;
Devoirs et examens sur : www.kiteb.net

val(ch,d,e);
inverse:=d;
end;

Procedure liste(var T:tab; n:integer;var nb :integer);


var ok:boolean;
begin
nb:=1;
T[nb]:=n ;
ok:= false;
repeat
if palindrome(n) then
ok:=true
else
Bac pratique informatique 2013
Correction Proposée par Mr Najeh SOUGUIR
Section Math & Sciences & Techniques -Sujet 27 mai 2013 - 14h

Program Lundi_27_mai_2013_14h; 'L': d:=50;


uses wincrt; 'X': d:=10;
var ch:string; 'V': d:=5;
'I': d:=1;
function verif (ch:string):boolean ; end;
var i:integer ; decimal:=d;
begin end;
verif:= true ;
for i :=1 to length (ch) do function convert (ch:string):integer;
if not (ch[i] in ['M','D','C','L','V','X','I'])then var n,s,i: integer;
verif:= false; begin
end; n:=0;
for i := 1 to length(ch) do
begin
procedure saisie(var ch:string); if (decimal(ch[i])>decimal(ch[i+1])) or
begin (i=length(ch)) then s:=1
repeat else s:=-1;
write('Donner un nombre romain : '); n:=n+s*decimal(ch[i]);
readln(ch) end;
until (verif(ch)) and (ch<>''); convert:=n;
end; end;

Function decimal(car : char):integer; {programme principal}


var d:integer; begin
begin saisie(ch);
case car of write('Le nombre romain ', ch,' vaut ', convert(ch),' en
décimal');
'M': d:=1000;
Devoirs et examens sur : www.kiteb.net

end.
'D': d:=500;
'C': d:=100;

Vous aimerez peut-être aussi