éNoncés+corrections bac2010
date post
09-Jul-2015Category
Documents
view
4.886download
0
Embed Size (px)
Transcript of éNoncés+corrections bac2010
Anne Scolaire : 2011-2012 4 SC
Lyce Attarine Ariana 2012
REPUBLIQUE TUNISIENNE
MINISTERE DE LEDUCATION
EXAMEN DU BACCALAUREAT - SESSION DE JUIN 2010
SECTIONS: Mathmatiques + Sciences Exprimentales + Sciences Techniques
EPREUVE : Pratique dinformatiques DUREE : 1 h COEFFICIENT : 0,5
DATE :
Important : Une solution modulaire au problme est exige. Enregistrez au fur et mesure votre programme dans le dossier Bac2010 se trouvant
sur la racine C:\ en lui donnant comme nom votre numro dinscription.
Ecrire un programme Pascal qui permet de dterminer si un entier donn n (n :?: 10) est
divisible par 7 ou non, en appliquant la mthode suivante :
1) supprimer le chiffre des units de n
2) calculer la valeur absolue de la diffrence entre le nombre obtenu en 1) et le double du chiffre d'unit supprim
3) recommencer les tapes 1) et 2) jusqu' obtenir un nombre un seul chiffre
4) si ce chiffre obtenu en 3) est gal 0 ou gal 7 alors le nombre u est divisible par 7.
Grille dvaluation
Travail fourni Nombre
de points
Dcomposition en modules utiles la solution propose (dclarations et appels)
Structures de donnes adquates
Saisie et contrle des donnes
Traitement avec les structures de contrles adquates
Compilation
4
2
3
8
3
25 mai 2010 10 h
Anne Scolaire : 2011-2012 4 SC
Lyce Attarine Ariana 2012
REPUBLIQUE TUNISIENNE
MINISTERE DE LEDUCATION
EXAMEN DU BACCALAUREAT - SESSION DE JUIN 2010
SECTIONS: Mathmatiques + Sciences Exprimentales + Sciences Techniques
EPREUVE : Pratique dinformatiques DUREE : 1 h COEFFICIENT : 0,5
DATE :
Program P25Mai2010_10h;
uses wincrt;
Var
N:LongInt;
{**************************************}
Procedure SaisieDe_N(Var N : LongInt);
Begin
Repeat
Write('Saisir N: ');
Readln(N);
Until (10
Anne Scolaire : 2011-2012 4 SC
Lyce Attarine Ariana 2012
REPUBLIQUE TUNISIENNE
MINISTERE DE LEDUCATION
EXAMEN DU BACCALAUREAT - SESSION DE JUIN 2010
SECTIONS: Mathmatiques + Sciences Exprimentales + Sciences Techniques
EPREUVE : Pratique dinformatiques DUREE : 1 h COEFFICIENT : 0,5
DATE :
Important : 1. Une solution modulaire au problme est exige. 2. Enregistrez au fur et mesure votre programme dans le dossier Bac2010 se trouvant sur la racine C:\ en lui
donnant comme nom votre numro dinscription.
Pour vrifier si un entier positif K de n chiffres est un nombre de KAPREKAR ou non, on peut
suivre la mthode suivante :
1) lever K au carr
2) additionner l'entier form par les n chiffres de droite du carr de K avec l'entier form par le reste des chiffres du carr de K
3) si la somme trouve l'tape 2) est gale K alors le nombre est dit de KAPREKAR
Exemples:
Si K= 9 alors n=1 et K2 = 81 L'entier form par les n chiffres de droite est gal 1 et 1'entier form par le reste des
chiffres est gal 8.
On constate que 1 + 8 = 9 = K, donc 9 est un nombre de KAPREKAR.
Si K= 45 alors n =2 et K2 = 2025 L'entier form par les n chiffres de droite est gal 25 et l'entier form par le reste des
chiffres est gal 20.
On constate que 25 +20 = 45 = K, donc 45 est un nombre de KAPREKAR. .
Si K=297 alors n = 3 et K2 = 88209 L'entier form par les n chiffres de droite est gal 209 et l'entier form par le reste des
chiffres est gal 88.
On constate que 209 + 88 = 297 = K, donc 297 est un nombre de KAPREKAR.
Travail demand :
Ecrire un programme Pascal qui permet de dterminer tous les nombres de KAPREKAR
infrieurs ou gaux 1000 en utilisant la mthode dcrite ci-dessus.
Grille dvaluation
Travail fourni Nombre
de points
Dcomposition en modules utiles la solution propose (dclarations et appels)
Structures de donnes adquates
Saisie et contrle des donnes
Traitement avec les structures de contrles adquates
Compilation
4
2
3
8
3
25 mai 2010 8 h 30
mn
Anne Scolaire : 2011-2012 4 SC
Lyce Attarine Ariana 2012
Program P25Mai2010_8h_Version1;
uses wincrt;
{** Fonction qui vrifie si un entier***}
{** est de KAPREKAR ou non ***}
Function Kaprekar(K:LongInt):Boolean;
Var
ChK:String;
ChK_Carre:String;
n:Integer;
K_Carre:LongInt;
Droite,Gauche:LongInt;
Ch_Droite,Ch_Gauche:String;
e:Integer;
Begin
{*** Conversion de k en chane ChK pour... }
STR(K,ChK);
{*** Dterminer n=nombre de chiffre de K}
n:=Length(ChK);
{*** Calcul du carr de K=K_Carre}
K_Carre:=SQR(K);
{*** Conversion K_Carre en chaine ChK_Carre}
STR(K_Carre,ChK_Carre);
{*** Extraction de la partie droite de ChK_Carre }
Ch_Droite:=Copy(ChK_Carre, Length(ChK_Carre)-n+1 , n);
{*** Extraction de la partie Gauche de ChK_Carre }
Ch_Gauche:=Copy(ChK_Carre, 1 , Length(ChK_Carre)-n);
{*** Conversion de la partie droite en Entier }
VAL(Ch_Droite, Droite, e);
{*** Conversion de la partie gauche en Entier }
VAL(Ch_Gauche, Gauche, e);
{*** Renvoi du rsultat TRUE ou FALSE }
Kaprekar:= K=Droite+Gauche;
{ou encore: IF (K=Droite+Gauche) THEN Kaprekar:= TRUE
ELSE Kaprekar:=FALSE;}
End;
{** Procdure qui parcourt les nombres ***}
{** de 1 1000 et vrifie pour chaque nombre *}
{** s'il est de kaprekar ou non ***}
{** les nombres de kaprekar seront afficher ***}
Procedure AfficherLesNombresDeKaprekar;
Var
i:Integer;
Begin
FOR i:=1 TO 1000 DO
Begin
IF kaprekar(i) THEN Writeln(i);
End;
End;
Begin {********** Programme Principal **************}
AfficherLesNombresDeKaprekar;
End.
Anne Scolaire : 2011-2012 4 SC
Lyce Attarine Ariana 2012
Program P25Mai2010_8h_Version2;
uses wincrt;
{*******************************************}
Function Kaprekar(K:LongInt; Diviseur:Integer):Boolean;
Var
K_Carre:LongInt;
Droite,Gauche:LongInt;
Begin
{*** Carr de K dans K_Carre ******}
K_Carre:=SQR(K);
{*** Extraction de la partie Droite ****}
Droite:=K_Carre MOD Diviseur;
{*** Extraction de la partie Gauche ****}
Gauche:=K_Carre DIV Diviseur;
{*** Renvoi du rsultat ******}
Kaprekar:= K=Droite+Gauche;
End;
{*******************************************}
Procedure AfficherLesNombresDeKaprekar;
Var
i:Integer;
Begin
FOR i:=1 TO 1000 DO
Begin
Case i OF
1..9 : IF kaprekar(i,10) THEN Writeln(i);
10..99 : IF kaprekar(i,100) THEN Writeln(i);
100..999: IF kaprekar(i,1000) THEN Writeln(i);
1000 : IF kaprekar(i,10000) THEN Writeln(i);
End;
End;
End;
{********** Programme Principal **************}
Begin
AfficherLesNombresDeKaprekar;
End.
Anne Scolaire : 2011-2012 4 SC
Lyce Attarine Ariana 2012
Anne Scolaire : 2011-2012 4 SC
Lyce Attarine Ariana 2012
Program P25Mai2010_15h_30mn;
uses wincrt;
Var
Ch:String;
{* Fonction qui vrifie si une chane
est compose seulement de lettres majuscules*}
Function Verif(Ch:String):Boolean;
Var i:Integer;
Begin
Repeat
i:=i+1;
Until (i=Length(Ch)) OR NOT (Ch[i] IN ['A'..'Z']);
Verif:= Ch[i] IN ['A'..'Z'];
{Ou encore...
IF Ch[i] IN ['A'..'Z'] THEN
Verif:=True
ELSE Verif:=False; }
End;
{**************************************}
Procedure SaisieDe_Ch(Var Ch : String);
Begin
Repeat
Write('Saisir une Chane: ');
Readln(Ch);
Until (Length(Ch)0) AND (Verif(Ch)=True);
End;
{**************************************}
Function Poids(Ch:String):Integer;
Var
i,P:Integer;
Begin
P:=0;
FOR i:=1 TO Length(Ch) Do
Begin
Case Ch[i] Of
'A' : P:=P+i*1;
'E' : P:=P+i*5;
'I' : P:=P+i*9;
'O' : P:=P+i*15;
'U' : P:=P+i*21;
'Y' : P:=P+i*25;
End;
End;
Poids:=P;
End;
{**************************************}
Begin
SaisieDe_Ch(Ch);
Write(Poids(Ch));
End.
Anne Scolaire : 2011-2012 4 SC
Lyce Attarine Ariana 2012
Anne Scolaire : 2011-2012 4 SC
Lyce Attarine Ariana 2012
Program P25Mai2010_15h_30mn;
uses wincrt;
{* === Fonction qui calcule la somme des puissances Kme des chiffres de X
--> X de 4 chiffres == *}
Function Puissance(X:LongInt;K:integer):LongInt;
Var U,D,C,M:Integer; {U:Unit, D:Dizaine, C:Centain