éNoncés+corrections bac2010

Click here to load reader

  • date post

    09-Jul-2015
  • Category

    Documents

  • view

    4.886
  • download

    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