منتدى قفصة  Index du Forum
منتدى قفصة
Gafsa
Répondre au sujet
BAC PRATIQUE 2002 + Correction
bedou


Hors ligne

Inscrit le: 11 Nov 2008
Messages: 42
Localisation: gafsa
Féminin Bélier (21mar-19avr)
Répondre en citant
<!-- /* Font Definitions */ @font-face {font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0; mso-font-charset:2; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:0 268435456 0 0 -2147483648 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} h1 {mso-style-next:Normal; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; page-break-after:avoid; mso-outline-level:1; font-size:14.0pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-font-kerning:0pt;} h2 {mso-style-next:Normal; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; page-break-after:avoid; mso-outline-level:2; font-size:12.0pt; font-family:"Times New Roman";} p.MsoTitle, li.MsoTitle, div.MsoTitle {margin:0cm; margin-bottom:.0001pt; text-align:center; mso-pagination:widow-orphan; font-size:22.0pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman"; font-weight:bold;} @page Section1 {size:595.3pt 841.9pt; margin:70.85pt 70.85pt 70.85pt 70.85pt; mso-header-margin:35.4pt; mso-footer-margin:35.4pt; mso-paper-source:0;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:956378175; mso-list-type:hybrid; mso-list-template-ids:1912117870 67895311 67895321 67895323 67895311 67895321 67895323 67895311 67895321 67895323;} @list l0:level1 {mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt;} @list l1 {mso-list-id:1037584569; mso-list-type:hybrid; mso-list-template-ids:-615348190 -746950338 67895299 67895301 67895297 67895299 67895301 67895297 67895299 67895301;} @list l1:level1 {mso-level-start-at:0; mso-level-number-format:bullet; mso-level-text:-; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} ol {margin-bottom:0cm;} ul {margin-bottom:0cm;} -->  
BAC PRATIQUE 2002 
 
  
 
SUJET 1 :
 
  
 
On se propose de répéter le traitement ci-dessous pour un entier  n. 
  1. Si le nombre est impair alors on le multiplie par 3 et on lui ajoute 1.
  2. Si le nombre est pair alors on le divise par 2.
 
  
 
Il est éventuel que le nombre 1 apparaisse lors de 10 premières répétition. 
 
  
 
 Ecrire un programme Pascal qui permet d’appliquer ce traitement à tous les entiers compris entre A et B (2 £ A< B £ 50) et d’afficher ceux qui arrivent à 1 lors des 10 premières répétitions. 
 
  
 
Exemple : 
 
            L’entier 10 sera affiché car il arrive à 1 après 6 répétitions 
 
/**********************Programmation***************************************/ 
 
Program SUJET1; 
 
uses wincrt; 
 
var a,b,nb:integer; 
 
  
 
procedure saisie(var x,y:integer); 
 
begin 
 
repeat 
 
write('donner un nombre  : '); 
 
read(x); 
 
until (x>=2)and (x<=50); 
 
  
 
repeat 
 
write('donner un nombre  : '); 
 
read(y); 
 
until (y>=2)and (y<=50)and(x<y); 
 
  
 
end; 
 
  
 
  
 
procedure affiche(x:integer); 
 
begin 
 
writeln('le nombre est : ',x); 
 
end; 
 
  
 
procedure traiter(a,b:integer;var nb:integer); 
 
var i,x:integer; 
 
begin 
 
  
 
for x:=a to b do 
 
begin 
 
nb:=0; 
 
i:=x; 
 
  
 
repeat 
 
nb:= nb+1; 
 
if i mod 2 =0 then i:= i div 2 
 
else i:= i*3+1; 
 
until i=1; 
 
if nb<=10 then affiche(x); 
 
end; 
 
end; 
 
  
 
begin 
 
saisie(a,b); 
 
traiter(a,b,nb); 
 
  
 
end. 
 
  
 
SUJET N°2 : 
 
  
 
Une anagramme est un mot obtenu par transposition des lettres d’un autre mot ( par exemple chien, chine sont des anagrammes du mot niche). 
 
  
 
Ecrire un programme Pascal qui permet de saisir deux mots non vides MOT1 et MOT2 puis de déterminer si MOT2 est une anagramme de MOT1. 
 
NB : 
 
La solution doit comporter au moins deux modules. 
 
Enregistrer au fur et à mesure votre programme dans le dossier bac2002 situé à la racine C : en lui donnant comme nom le numéro de votre carte d’identité. 
 
/*****************************Programation*********************************/ 
 
program anagramme; 
 
  
 
var mot1,mot2,test:string;i,j,l:integer; 
 
  
 
procedure saisie1(var mot1:string); 
 
          begin 
 
          repeat writeln('Donner votre mot1'); 
 
                 readln(mot1); 
 
          until length(mot1)>0; 
 
          end; 
 
procedure saisie2(var mot2:string;l:integer); 
 
          begin 
 
          repeat writeln('Donner votre mot2'); 
 
                 readln(mot2); 
 
          until length(mot2)=l; 
 
          end; 
 
  
 
begin 
 
saisie1(mot1); 
 
l:=length(mot1); 
 
saisie2(mot2,l); 
 
test:='varie'; 
 
for i:=1 to l do 
 
    begin 
 
    j:=0; 
 
    repeat j:=j+1; 
 
           test:='faux'; 
 
    until (j=l) or (mot1[i]=mot2[j]); 
 
    if j<l then test:='vraie'; 
 
    end; 
 
  
 
if test='vraie' then writeln(mot1,' et ',mot2,' sont des anagrammes.') 
 
        else writeln(mot1,' et ',mot2,' ne sont pas des anagrammes.'); 
 
end. 
 
  
 
SUJET 3 :
 
Ecrire un programme Pascal qui réalise le traitement suivant : 
 
-         choisir un entier n de l’intervalle [2,9] et un entier de l’intervalle [10,99] 
 
-         afficher tous les entiers de l’intervalle [1,max] en remplaçant par le caractère ‘*’ tous les multiples de n ainsi que tous les entiers dont l’écriture contient le chiffre n. 
 
Exemple d’exécution : 
 
    Si n= 4 et Max = 18 alors la liste suivante sera affichée : 
 
1 2 3 * 5 6 7 * 9 10 11 * 13 * 15 * 17 18 
 
  
 
/*************************Programmation****************************/ 
 
program sujet3; 
 
uses wincrt; 
 
var 
 
i,max,n:integer; 
 
procedure saisie(var n,max:integer); 
 
begin 
 
repeat 
 
write(' donner un entier:'); 
 
readln(n); 
 
until n in [2..9]; 
 
repeat 
 
write('donner un nombre maximale:'); 
 
readln(max); 
 
until max in[10..99]; 
 
end; 
 
  
 
procedure trait(n,max:integer); 
 
var 
 
i:integer; 
 
begin 
 
for i:=1 to max do 
 
if (i mod n = 0) or (i mod 10 = n) or (i div 10 = n) 
 
 then write('*') else write(i); 
 
end; 
 
  
 
begin 
 
saisie(n,max); 
 
trait(n,max); 
 
end. 
 
  
 
SUJET 4 :
 
Ecrire un programme Pascal qui réalise le traitement suivant : 
 
-         choisir un entier n de l’intervalle [100,500] et un m entier de l’intervalle [10,99] 
 
-         afficher tous les entiers de l’intervalle [1,m] en remplaçant par le caractère ‘*’ tous les diviseurs de n ainsi que tous les entiers dont l’écriture contient le chiffre n. 
 
Exemple d’exécution : 
 
    Si n= 4 et Max = 18 alors la liste suivante sera affichée : 
 
  
 
program sujet4; 
 
uses wincrt; 
 
var 
 
m,n:integer; 
 
procedure saisie(var n,m:integer); 
 
begin 
 
repeat 
 
write(' donner un entier:'); 
 
readln(n); 
 
until (n >=100) and (n<=500); 
 
repeat 
 
write('donner un nombre m:'); 
 
readln(m); 
 
until m in[10..99]; 
 
end; 
 
  
 
procedure trait(n,m:integer); 
 
var 
 
i,u:integer; 
 
begin 
 
u:=n div 10 
 
for i:=1 to m do 
 
begin 
 
if (n mod i = 0) or (i mod 10 = u)  or (u=i div 10) 
 
 then write('*') else write(i); 
 
end; 
 
end; 
 
  
 
begin 
 
saisie(n,m); 
 
trait(n,m); 
 
end. 
 
  
 
Sujet 5 : 
 
Soit un tableau T de 20 entiers positifs. Ecrire un programme Pascal qui permet d’afficher les éléments de T compris entre deux positions P1 et P2 , leur moyenne arithmétique, la valeur maximale et la valeur minimale contenus dans cet intervalle. 
 
  
 
            On donne 1<=P1<P2<=20. 
 
  
 
NB : 
 
La solution doit comporter au moins deux modules. 
 
program sujet5; 
 
uses wincrt; 
 
type 
 
 tab =array [1..20] of integer; 
 
 var t:tab; 
 
 p1,s,j,p2,max,min:integer; 
 
moy:real; 
 
  
 
 procedure saisie(var p1,p2:integer); 
 
 begin 
 
 repeat 
 
  
 
 readln(p1); 
 
 readln(p2); 
 
 until (p1>=1)and (p2<=20); 
 
 end; 
 
  
 
 procedure remplir(var t:tab); 
 
 var 
 
 i:integer; 
 
 begin 
 
 for i:= 1 to 20 do 
 
 T[i]:= random(100); 
 
 end; 
 
  
 
 begin 
 
 saisie(p1,p2); 
 
 remplir(t); 
 
 min:=t[p1]; 
 
 max:=t[p2]; 
 
 s:=0     ; 
 
 for j := p1 to p2 do 
 
 begin 
 
 write(t[j],'*'); 
 
 s:=s+t[j] ; 
 
 if t[j]>max 
 
 then max:=T[j]; 
 
 if t[j]<min then min := T[j]; 
 
 end; 
 
 moy:=s/(p2-p1+1); 
 
 writeln('moyenne',moy); 
 
 writeln('minimum',min)  ; 
 
 writeln('maximum',max); 
 
 end   .                            . 


Publicité
Publicité


PublicitéSupprimer les publicités ?
BAC PRATIQUE 2002 + Correction
Toutes les heures sont au format GMT + 2 Heures  
Page 1 sur 1  

  
  
 Répondre au sujet