Bookmark and Share

Liens sponsorisés

Bac Pratique 2004 Print E-mail
Written by Administrator   
Tuesday, 20 May 2008 15:42

 Exercice 1 (Vendredi 14 Mai 9h)

Soit T un tableau de N éléments (2<N<200) de type caractère. On désire écrire un programme pascal permettant de vérifier l’existence dans le tableau T d’un certain nombre de mots saisis dans un tableau Tm de P éléments (2<P<20).

Exemple : Soit :   Tm                                    T

BAC Canne Sujet   L B S u j e t a B A C a n n e d

Remarques :

  • 1- les caractères de la chaîne recherchée doivent être adjacents dans le tableau T et non dispersés.
  • 2- On remarque que les mots BAC, Canne et Sujet figurent dans le tableau T.

NB : La solution doit comporter au moins deux modules.

Exercice 2 (Vendredi 14 Mai 10h30)

Ecrire un programme pascal permettant de saisir deux entiers X et Y (0<X<=9 et 0 <Y<=9) et d’afficher la table de multiplication selon le modèle suivant :

Exemple : Pour X =4 et Y=5, le programme affiche :

                        1          2          3          4          5

            1          1          2          3          4          5         

            2          2          4          6          8          10

            3          3          6          9          12        15

            4          4          8          12        16        20

NB : La solution doit comporter au moins deux modules.

Exercice 3 (Vendredi 14 Mai 14h)

On considère deux suites (U) et (V) définies à partir de :

U1=1

U2=2

Ui=Ui-1+Ui-2(i ³3)

Vi=Ui / Ui-1(i ³2)

 La suite (Vn ) tend vers une limite appelée nombre d’or.

On suppose que le nième terme de la suite (V), soit Vn  , donne une valeur approchée du nombre d’or avec une précision E, dès que | Vn - Vn-1 | <E.

Ecrire un programme pascal permettant de déterminer le terme Vn à 10-4 près et son rang.

NB : La solution doit comporter au moins deux modules.

Exercice 4 (Vendredi 14 Mai 15h30)

Ecrire un programme pascal permettant de saisir les éléments d’un tableau T de N entiers positifs ou nuls (0<N£20), d’afficher l’occurrence du plus petit élément et l’indice de sa première apparition.

Exemple : Soit :   T   

5 2 4 2 1 7 9 4 1 1

Le plus petit élément est 1, son occurrence est 3 et l’indice de sa première apparition est 5.

NB : La solution doit comporter au moins deux modules.

Exercice 5 (Samedi 15 Mai 9h)

On veut écrire un programme pascal permettant de saisir les éléments de deux tableaux  Ta et Tb contenant respectivement p et q entiers (5£p£20 et 5£q£20) puis déterminer si Ta est un « sous-tableau » de Tb. C’est-à-dire que tous les éléments de Ta figurent dans l’ordre dans Tb.

Exemple : Soit :   Ta              Tb

3 5 7   0 1 3 6 1 9 5 7 8

Résultat : Ta est un sous tableau de Tb

NB : La solution doit comporter au moins une procédure et une fonction.

Exercice 6 (Samedi 15 Mai 10h30)

L’algorithme suivant permet d’insérer un élément dans un tableau trié.

  1. DEBUT Insertion
  2. Répéter

Ecrire(”n=”)

Lire(n)

Jusqu’à (1<n) et (n<Nmax)

  1. T[1] ß 1

Pour i de 2 à n Répéter

   T[i] ß T[i -1] +2*i

Fin pour

  1. Ecrire (”introduire l’entier à insérer”), Lire(v)
  2. Proc Insertion(T,v)
  3. FIN Insertion

Questions :

  • 1) traduire l’algorithme ci-dessus en turbo Pascal (Nmax, nombre d’éléments du tableau T, est une constante égale à 15)
  • 2) Développer le module Insertion permettant d’insérer l’élément v dans le tableau T de telle sorte que le tableau reste trié.
  • 3) Donner, sous forme de commentaire à la fin du programme, le rôle de la séquence 2.
  • 4) Ecrire un module d’affichage du tableau obtenu et en tenir compte dans le programme.

Exercice 7 (Samedi 15 Mai 14h)

L’algorithme suivant permet de remplir un tableau T puis d’inverser chacune de ses deux parties. (1ère partie : du 1er au pème  élément, 2ème partie : du (p+1)ème  au nème élément), p est un entier à saisir.

  1. DEBUT Inversion
  2. Proc Saisie(n,p)
  3. Pour i de 1 à n Répéter

Lire(T[i])

      Fin pour

  1. Proc Inverse(T,1,p)
  2. Proc Inverse(T,p+1,n)
  3. Pour i de 1 à n Répéter

Ecrire(T[i]:2)

      Fin pour

  1. FIN Inversion

Questions :

  • 1) traduire l’algorithme ci-dessus en turbo Pascal et l’enregistrer dans le dossier Bac2004 situé à la racine C: en lui donnant comme nom le numéro de votre carte d’identité suivi de la chaîne de caractères “V1″.
  • 2) Développer le module Saisie permettant de saisir deux entiers n et p vérifiant les conditions suivantes : (3<n<20) et (1<p<n-1) et en tenir compte dans le programme.
  • 3) Développer le module Inverse qui permet d’inverser une portion du tableau T du jème au kème élément (j< k) et en tenir compte dans le programme.
  • 4) Enregistrer la nouvelle version du programme dans le dossier Bac2004 situé à la racine C: en lui donnant comme nom le numéro de votre carte d’identité suivi de la chaîne de caractères “V2″.

Exemple : Pour n=9  et p=5

p    (état initial de T)               p     (état final de T)

4 -5 8 0 -2 -1 6 10 3   -2 0 8 -5 4 3 10 6 -1

Exercice 8 (Samedi 15 Mai 15h30)

Soit T un tableau de N éléments (2<N<20) de type caractère. On se propose d’écrire un programme pascal permettant d’afficher la longueur de la plus longue séquence contenant uniquement des voyelles.

NB:     - une séquence doit contenir au moins deux éléments.

- la solution doit comporter au moins deux modules.

Exercice 9 (Lundi 17 Mai 9h)

Ecrire un programme pascal permettant de saisir les éléments d’un tableau T de N entiers (4£N£10) déterminer puis afficher tous les éléments distincts de ce tableau.

NB: la solution doit comporter au moins deux modules.

Exercice 10 (Lundi 17 Mai 10h30)

On se propose d’écrire un programme pascal permettant de chercher puis d’afficher tous les entiers naturels d’un intervalle [a,b] (10<a<b<200) qui sont divisible par chacun de leurs chiffres non nuls.

Exemple : Dans l’intervalle [15,50] l’entier 36 sera affiché car il est divisible par 3 et par 6.

NB: la solution doit comporter au moins deux modules.

Exercice 11 (Lundi 17 Mai 14h)

Soit T un tableau de N caractères alphabétiques (2<N<20).

Ecrire un programme pascal permettant de crypter les données figurant dans le tableau T comme suit :

  1. Convertir chaque caractère en sa représentation en code ASCII.
  2. Permuter les chiffres des unités avec ceux des dizaines et déterminer le caractère correspondant à ce nouveau code ASCII.
  3. Remplir un tableau R par les codes ASCII calculés dans l’étape N°2 des caractères du tableau T.
  4. Afficher le tableau R obtenu.

NB: la solution doit comporter au moins deux modules.

Exercice 12 (Lundi 17 Mai 15h30)

On veut écrire un programme pascal permettant de saisir N entiers (10<N<20) dans T et de les arranger en plaçant les valeurs paires, s’il y en a, au début du tableau, sans modifier l’ordre de saisie des valeurs paires et impaires.

Exemple :

T 4 -5 8 10 -2 -1 6 9 3              T 4 8 10 -2 6 -5 -1 9 3

 Etat initial de T               Etat final de T

NB: la solution doit comporter au moins deux modules.

Exercice 13 (Mardi 18 Mai 9h)

On veut écrire un programme pascal permettant de lire deux mots ch1 et ch2 et d’afficher tous les caractères qui apparaissent dans les deux chaînes sans redondance.

Exemple : Soit ch1 = “Bonjour” et ch2 =”Bonbon”

Résultat = B, o, n

NB: la solution doit comporter au moins deux modules.

Exercice 14 (Mardi 18 Mai 10h30)

Soit la suite (U) définie par :

U0=2

U1=3

Un=Un-1+2*Un-2

En supposant que cette suite est croissante, écrire un programme pascal permettant de lire un entier x (x>2), de vérifier et d’afficher s’il est un terme de la suite U ou non. Dans l’affirmative afficher son rang.

NB: la solution doit comporter au moins deux modules.

Exercice 15 (Mardi 18 Mai 14h)

Soit l’algorithme suivant :

  1. DEBUT Inconnu
  2. Lire(n)
  3. Pour i de 1 à n Répéter

   Lire(D[i])

Fin pour

  1. {Ensemble d’actions permettant d’initialiser à 1 les éléments d’un tableau S de N entiers}
  2. Pour i de 1 à n-1 Répéter
          Pour j de i+1 à n Répéter

Si D[i] > D[j]  Alors

                                    S[i]<– S[i]+1

                                    Sinon

                                   S[j]<– S[j]+1

            Fin Si

        Fin pour

Fin Pour

Pour i de 1 à n Répéter

A[S[i]] <– D[i]

      Fin pour

  1. FIN Inconnu

Questions :

  • 1) Développer la séquence 3 et traduire cet algorithme en Pascal.
  • 2) Enregistrer le programme dans le dossier Bac2004 situé à la racine C: en lui donnant comme nom le numéro de votre carte d’identité suivi de la chaîne de caractères “V1″.
  • 3) Donner, sous forme de commentaire à la fin du programme, le rôle de celui ci.
  • 4) Transformer l’étape 4 en une procédure et en tenir compte dans le programme.
  • 5) Ecrire un module d’affichage du tableau A et en tenir compte dans le programme.
  • 6) Enregistrer le programme dans le dossier Bac2004 situé à la racine C: en lui donnant comme nom le numéro de votre carte d’identité suivi de la chaîne de caractères “V2″.

Exercice 16 (Mardi 18 Mai 15h30)

On se propose par la suite, l’une des méthodes de la conversion d’un entier décimal (X) en son équivalent binaire (Base 2).

  1. On divise (division entière) le nombre X par 2.
  2. On sauvegarde le reste de la division.
  3. On refait les deux étapes précédentes avec le quotient de la division, jusqu’à avoir un quotient nul.
  4. Le regroupement des restes en sens inverse de leurs apparitions donne la valeur du nombre X en binaire.

Exemple :

Si X=13 alors

  • §
    Sens de lecture des restes

    la division entière de 13 par 2 donne un quotient =6 et un reste = 1

  • § la division entière de 6 par 2 donne un quotient =3 et un reste = 0
  • § la division entière de 3 par 2 donne un quotient =1 et un reste = 1
  • § la division entière de 1 par 2 donne un quotient =0 et un reste = 1

Donc le nombre décimal 13 vaut 1101 en binaire.

Question :

Ecrire un programme pascal permettant de saisir un entier naturel X£100, de déterminer et d’afficher sa valeur en binaire, selon le format suivant :

                        Le nombre décimal X vaut ……. En Binaire.

NB: La solution doit comporter au moins une procédure et une fonction.

Exercice 17 (Mercredi 19 Mai 9h)

L’algorithme suivant permet de rendre un tableau symétrique :

  1. DEBUT Tab_sym
  2. Répéter

       Lire(n)
      jusqu’à (n>1) et (n MOD 2=0)

  1. Pour i de 1 à n DIV 2 Répéter

   Lire(T[2i-1])
   T[2i]ß T[2i-1]

Fin pour

  1. Proc Symetrie(T)
  2. FIN Tab_sym

Questions :

  • 1) Traduire cet algorithme en Pascal et l’enregistrer dans le dossier Bac2004 situé à la racine C: en lui donnant comme nom le numéro de votre carte d’identité suivi de la chaîne de caractères “V1″.
  • 2) Développer le module Symetrie permettant de transformer T en tableau symétrique.
  • 3) Donner, sous forme de commentaire à la fin du programme, le rôle de la séquence 2.
  • 4) Transformer la séquence 2 en une procédure et en tenir compte dans le programme.
  • 5) Enregistrer la nouvelle version du programme dans le dossier Bac2004 situé à la racine C: en lui donnant comme nom le numéro de votre carte d’identité suivi de la chaîne de caractères “V2″.

Exemple :

T 4 4 0 0 -5 -5 8 8 3 3              T 4 0 -5 8 3 3 8 -5 0 4

                        Etat initial de T                                              Etat final de T

Exercice 18 (Mercredi 19 Mai 10h30)

Soit T un tableau de N caractères (2<N<20). On veut écrire un programme pascal permettant de crypter les données figurant dans le tableau T comme suit :

  1. Saisir un entier X (0<X<8).
  2. Convertir chaque élément de T en une chaîne correspondante à sa représentation binaire sur 8 bits.
  3. Effectuer une rotation des chiffres binaires à droite, obtenus dans l’étape N°2, de X position(s).
  4. Stocker chaque valeur obtenue suite au cryptage dans l’étape  N°3 dans un tableau Tcr.
  5. Afficher le contenu du tableau Tcr.

On se propose d’utiliser la fonction Convert permettant de convertir une valeur décimale en une valeur binaire représentée sous forme de chaîne de 8 caractères.

   Function convert (d:integer):string;

Var i:integer; ch,chc:string;

Begin

Ch:=”;

For I := 1 to 8 do

Begin

Str(d MOD 2,chc);

D:=d DIV 2;

Ch:=chc+ch;

End;

Convert:=ch;

End;

Exemple :

Le caractère ‘A’ a une représentation binaire égale à ‘01000001′. Si X =2, Alors la représentation binaire de ‘A’ après une rotation de deux positions à droite sera ‘01010000′, cette valeur sera stockée dans le tableau Tcr.

NB: la solution doit comporter au moins deux modules.

Exercice 19 (Mercredi 19 Mai 14h)

On veut écrire un programme pascal permettant de saisir les éléments d’un tableau T de N entiers positifs ou nuls (5£N£20) et de déplacer tous les éléments nuls à la fin du tableau.

Exemple :

T 4 8 0 2 0 6 10 3              T 4 8 2 6 10 3 0 0

                        Etat initial de T                                              Etat final de T

NB: la solution doit comporter au moins deux modules.

Exercice 20 (Mercredi 19 Mai 15h30)

On se propose de fusionner les éléments de deux tableaux triés T et V contenant respectivement p et q éléments de type entier.

Ecrire un programme pascal permettant de saisir les éléments des deux tableaux T et V, de les trier dans le sens croissant et de les fusionner dans un tableau F en repectant l’ordre de tri croissant.

On veut utiliser la procédure de tri suivante :

  1. DEF PROC TRI(Var T:tab; n:entier)
  2. j<–n

Répéter
  permut <– faux
            Pour i de 1 à j-1 Répéter

Si T[i] > T[i+1]  Alors

                                               Aux<– T[i]

                                               T[i]<–T[i+1]

                                               T[i+1]<–Aux

permutßvrai

                        Fin Si

            Fin pour

       J<– j-1

  Jusqu’à (permut = faux)

  1. FIN TRI

NB: la solution doit comporter au moins deux modules.

Exercice 21 (Jeudi 20 Mai 9h)

La fonction RANDOM(X) en turbo pascal, permet de retourner un entier appartenant à l’intervalle [0,X-1].

Ecrire un programme pascal permettant de remplir, d’une façon aléatoire (en utilisant la fonction RANDOM), le tableau T par N entiers de l’intervalle [5,20] puis d’afficher les éléments de T qui son divisibles par leurs rangs.

NB: la solution doit comporter au moins deux modules.

Exercice 22 (Jeudi 20 Mai 10h30)

Soit l’algorithme suivant :

  1. DEBUT Exercice
  2. Lire(n)
  3. Pour i de 1 à n Répéter

   Lire(T[i])

Fin pour

  1. i<–1
  2. Répéter
                Si T[i] > T[i+1]  Alors

                                               C<– T[i]

                                               T[i]<–T[i+1]

                                               T[i+1]<–C

i<–1

                                    Sinon

                                                i<– i+1

            Fin Si

        Jusqu’à i = n

  1. FIN Exercice

Questions :
1) Traduire cet algorithme en pascal.

2) Donner, sous forme de commentaire à la fin du programme, le rôle de celui-ci.

3) Transformer la séquence 4 en une procédure et en tenir compte dans le programme.

4) Ajouter  une procédure permettant d’afficher tous les éléments du tableau T sans redondance et en tenir compte dans le programme.

Exercice 23 (Jeudi 20 Mai 14h)

Soit un tableau T de N réels (1<N<20).

Ecrire un programme Pascal permettant de :

  • remplir un tableau T de N réels.
  • Afficher la moyenne Moy de T.
  • Afficher tous les éléments du tableau T dont les valeurs sont les plus proches de Moy et leurs indices

NB: la solution doit comporter au moins deux modules.

Exercice 24 (Jeudi 20 Mai 15h30)

On veut écrire un programme pascal permettant  de saisir  un tableau T de N entiers (10<N<20), comportant obligatoirement  des valeurs positifs et négatifs, dans le tableau T.

Déterminer et afficher le nombre d’éléments positifs et la somme des valeurs négatives.

NB: la solution doit comporter au moins deux modules.

Exercice 25 (Vendredi 21 Mai 9h)

L’algorithme suivant permet de saisir N éléments distincts dans un tableau T :

  1. DEBUT Saisie_tab
  2. Répéter

         Lire(n)
      jusqu’à (n >=2) et (n<=20)

  1. Ecrire(”T[1]=”)

Lire (t[1])
Pour i de 2 à n Répéter
  Répéter
            Ecrire(”T[”,i,”]=”)

            Lire(T[i])
   jusqu’à FN Existe(T,i) = faux

Fin pour

  1. Pour i de 1 à n Répéter
    Ecrire(T[i])
    Fin pour
  2. FIN Saisie_tab

Questions :

  • 1) Traduire cet algorithme en Turbo Pascal et l’enregistrer dans le dossier Bac2004 situé à la racine C: en lui donnant comme nom le numéro de votre carte d’identité suivi de la chaîne de caractères “V1″.
  • 2) Développer le module Existe permettant qui vérifie l’existence de l’élément en cours de saisie dans le tableau.
  • 3) Transformer la séquence 2 en une procédure appelée Lecture et en tenir compte dans le programme.
  • 4) Enregistrer la nouvelle version du programme dans le dossier Bac2004 situé à la racine C: en lui donnant comme nom le numéro de votre carte d’identité suivi de la chaîne de caractères “V2″.

Exercice 26 (Vendredi 21 Mai 10h30)

Soit un tableau T de N entiers distincts.

Si i<j et T[i]>T[j]  alors le couple (i,j) est appelé inversion de T.

Ecrire un programme en Turbo Pascal permettant  de saisir  un tableau T de N entiers distincts, puis déterminer et afficher tous les couples inversion de T.

NB: la solution doit comporter au moins deux modules.

Pour vérifier l’unicité d’un élément saisi d’indice (i>1), on peut utiliser la fonction verif dont l’algorithme est le suivant :

  1. DEF FN verif(T:tab;i:entier):booléen
  2. test <– vrai
    j<–1

      Répeter

         Test <– t[i]<>t[j]
          j<–j+1
 jusqu’à (test = faux) ou (j=i)

  1. verif <– test
  2. Fin verif

Exercice 27 (Vendredi 21 Mai 14h)

On se propose de déterminer une valeur approchée de Õ par la méthode de Wallis, définie par la formule suivante :

Õ/2=2/1*2/3*4/3*4/5*6/5*6/7*8/7*8/9*…

Ecrire un programme Pascal qui utilise la formule ci-dessus pour déterminer une valeur approchée de Õ à 10-6 près.

NB:

  • Le calcul s’arrête lorsque la différence entre deux valeurs consécutives de cette formule devient strictement inférieure à  10-6.
  • La solution doit comporter au moins deux modules.

Exercice 28 (Vendredi 21 Mai 15h30)

On se propose de simuler un jeu qui consiste à faire des lancés de deux dés, le score est calculé en additionnant les points de chaque dé lors d’une lancé.

Le jeu se termine au bout de dix lancés au maximum.

Si le score du joueur atteint ou dépasse 50 points ou s’il obtient deux doublés successifs, il est déclaré gagnant.

 Ecrire un programme Pascal permettant de simuler ce jeu.

NB:

  • Un dé est un cube dont les faces sont numérotées de 1à 6.
  • Une lancé se traduit par le fait de lancer deux dés en même temps.
  • Une doublé est le fait d’obtenir deux faces portant le même numéro dans une lancé.
  • La solution doit comporter au moins deux modules.
Source : Bac Pratique 2004, depuis la page http://lewebpedagogique.com/hajeralgorithme/ 
 

 

Liens sponsorisés