5. Bac pratique 2012 g1
Prof:Néjib ILAHI
LYCEE ENFIDHA SOUSSE
Page 1 sur 3
program FactPrem;
uses wincrt;
type
fdat=file of integer;
tab=array[1..20] of string;
var fd:fdat; ft:text;n,p,d:integer;decomp:tab;
{***** fonction verif *********}
function verif(n,p:integer):boolean;
var chn:string;
begin
str(n,chn);
verif:=(length(chn)=p);
end;
{******** remplissage *******}
procedure remplir(var fd:fdat; n,p:integer);
var i,v:integer;
begin
rewrite(fd);
for i:=1 to n do
begin
repeat
write('saisir un entier de ',p, ' chiffres: ');
readln(v);
until verif(v,p);
write(fd,v);
end;
end;
{*********** affichage fichier de donné&es ********}
procedure affiche1(var f:fdat);
var ch:string;
begin
reset(f);
while(not(eof(f)))do
begin
read(f,n);
writeln('---->',n);
end;
end;
{*********** affichage fichier texte ********}
procedure affiche(var ft:text);
var ch:string;
begin
Correction bac pratique 2012 g1
Devoirsetexamenssur:www.kiteb.net
6. Bac pratique 2012 g1
Prof:Néjib ILAHI
LYCEE ENFIDHA SOUSSE
Page 2 sur 3
reset(ft);
while(not(eof(ft)))do
begin
readln(ft,ch);
writeln('---->',ch);
readln;
end;
end;
{*********** decomposition en facteur premier ******}
procedure decompfact(var T:tab;var n:integer;v:integer);
var i:integer; chi:string;
begin
i:=2;
n:=0;
while (v<>1) do
if(v mod i=0)then
begin
n:=n+1;
str(i,chi);
T[n]:=chi;
v:=v div i;
end
else
i:=i+1;
end;
{************ generation de la frequence des facteurs premiers ****}
function genere(T:tab;d:integer):string;
var c:char; n,i:integer;chg,chn,ch:string;
begin
chg:='';ch:=T[1]; n:=1;i:=1;
repeat
i:=i+1;
if(T[i]=ch)then
n:=n+1
else
begin
str(n,chn);
chg:=chg+chn+ch;
ch:=T[i];
n:=1;
end;
until(i>d);
genere:=chg;
end;
Devoirsetexamenssur:www.kiteb.net
7. Bac pratique 2012 g1
Prof:Néjib ILAHI
LYCEE ENFIDHA SOUSSE
Page 3 sur 3
{************ decomposition *******}
procedure decomposition (var fd:fdat; var ft:text; n:integer);
var chdecomp,chg:string; v,i,j:integer;
begin
reset(fd);
rewrite(ft);
for i:=1 to n do
begin
read(fd,v);
decompfact(decomp,d,v);
{***** afficage de décomposition en facteurs premiers *****}
write(v,' = ');
for j:=1 to d-1 do
write(decomp[j],',');
writeln(decomp[d]);
chg:=genere(decomp,d);
writeln(ft,chg);
end;
end;
{********* programme principal *******}
begin
repeat
write('Saisir N: '); readln(n);
until (n>2) and (n<100);
repeat
write('Saisir P: '); readln(p);
until (p>2) and (p<6);
assign(fd,'nombres.dat');
assign(ft,'facteurs.txt');
remplir(fd,n,p);
clrscr;
writeln('--------------------------------------------------------');
writeln;
writeln('------------ Le contenu du fichier Nombres.dat ---------');
writeln;
writeln('--------------------------------------------------------');
decomposition(fd,ft,n);
writeln('--------------------------------------------------------');
writeln;
writeln('------------ Le contenu du fichier Facteurs.txt ---------');
writeln;
writeln('--------------------------------------------------------');
affiche(ft);
end.
Devoirsetexamenssur:www.kiteb.net
8. Bac pratique 2012 g2
Prof:Néjib ILAHI
LYCEE ENFIDHA SOUSSE
Page 1 sur 2
program PremCir;
uses wincrt;
type fdat= file of integer;
var f:fdat; p,q:integer;
{* ***** fonction premier ******}
function premier(n:integer):boolean;
var nbd,i:integer;
begin
nbd:=0;
for i:=1 to n do
if(n mod i=0)then
nbd:=nbd+1;
premier:=(nbd=2);
end;
function permut_cir(ch:string):integer;
var i,n,e:integer; c:char;
begin
c:=ch[length(ch)];
for i:=length(ch) downto 2 do
ch[i]:=ch[i-1];
ch[1]:=c;
val(ch,n,e);
permut_cir:=n;
end;
{********** fonction circulaire *************}
function circulaire(n:integer):boolean;
var ok:boolean;p:integer; ch:string;
begin
str(n,ch);
ok:=true;
repeat
p:=permut_cir(ch);
if(premier(p)=false)then
ok:=false
else
str(p,ch);
until(ok=false) or(p=n);
Correction bac pratique 2012 g2
Devoirsetexamenssur:www.kiteb.net
9. Bac pratique 2012 g2
Prof:Néjib ILAHI
LYCEE ENFIDHA SOUSSE
Page 2 sur 2
circulaire:=ok;
end;
{****** nombre premier circulaire ******}
procedure nb_premier_cir(var f:fdat; p,q:integer);
var i:integer;
begin
rewrite(f);
for i:=p to q do
if(premier(i))then
if(circulaire(i))then
write(f,i);
end;
{*********** affichage fichier de donné&es ********}
procedure affiche(var f:fdat);
var ch:string; n:integer;
begin
reset(f);
while(not(eof(f)))do
begin
read(f,n);
writeln('---->',n);
readln;
end;
end;
{******** programme principal *********}
begin
assign(f,'cicul.dat');
repeat
write('saisir p: '); readln(p);
write('saisir q: '); readln(q);
until(p>10) and(p<q) and (q<20000);
nb_premier_cir(f,p,q);
clrscr;
writeln('--------------------------------------------------------');
writeln;
writeln('------------ Le contenu du fichier Circ.dat ---------');
writeln;
writeln('--------------------------------------------------------');
affiche(f);
end.
Devoirsetexamenssur:www.kiteb.net
10. Bac pratique 2012 g2
Prof:Néjib ILAHI
LYCEE ENFIDHA SOUSSE
Page 1 sur 2
procedure affiche(var ft:text);
var ligne:string; i:integer;
begin
reset(ft);
i:=0;
while not(eof(ft)) do
begin
readln(ft,ligne);
writeln('U',i,' = ',ligne);
i:=i+1;
end;
end;
function construction(u:string):string;
var i,n:integer; c:char; ch,chn:string;
begin
i:=1;c:=u[1];ch:=''; n:=1;
repeat
i:=i+1;
if(u[i]=c)then
n:=n+1
else
begin
str(n,chn);
ch:=ch+chn+c;
c:=u[i];
n:=1;
end;
until (i>length(u));
construction:=ch;
end;
{********** suite de robinson ********}
procedure suite_robinson(var ft:text;n:integer);
var u:string; k:integer;
begin
rewrite(ft);
u:='0';
writeln(ft,u);
for k:=1 to n do
begin
u:=construction(u);
writeln(ft,u);
end;
Correction bac pratique 2012 g3
Devoirsetexamenssur:www.kiteb.net
11. Bac pratique 2012 g2
Prof:Néjib ILAHI
LYCEE ENFIDHA SOUSSE
Page 2 sur 2
end;
{*********** prgramme principal ******}
begin
assign(ft,'robinsontxt');
repeat
write('Saisir k : '); readln(k);
until k in [2..15];
writeln;
writeln('--------------------------------------');
writeln('----- SUITE DE ROBINSON --------------');
writeln('--------------------------------------');
writeln;
suite_robinson(ft,k);
affiche(ft);
end.
Devoirsetexamenssur:www.kiteb.net