Vous êtes sur la page 1sur 24

Lyce Secondaire Ghardimaou

3me Sciences de linformatique

Anne Scolaire: 2008/2009


******

Matire: Algorithmique et programmation

Srie dexercices

Enseignant: Marzouki Fathi

******

Exercice n1 :
Ecrire une analyse, un algorithme et la traduction en Pascal d'un programme
intitul "SOMME_CHIFFRES", qui permet de lire une chane de caractres CH
commenant obligatoirement par une lettre alphabtique majuscule (et suppose
compose par des lettres et des chiffres), dtermine et affiche l'entier S form
par la somme des chiffres qui figurent dans la chane CH.
Exemple:
Pour CH='Ali12abc26'
la valeur de S est 1+2+2+6 = 11
Le programme SOMME_CHIFFRES affichera le rsultat suivant : S = 11.

Exercice n2 :
Ecrire une analyse, un algorithme et la traduction en Pascal d'un programme
intitul "CALCUL", qui permet de remplir un tableau T par 100 entiers
strictement positifs, calculer et afficher S1 et S2, sachant que:
- S1 est la somme des lments pairs de T,
- S2 est al somme des entiers impairs de T.

Exercice n3 :
Ecrire une analyse, un algorithme et la traduction en Pascal d'un programme
intitul "PROGRESSION_CROISSNATE", qui permet de lire un entier N
strictement positif et affiche :
- "OUI POUR N" si le chiffres de N forment une progression croissante. On
pourra prendre comme sens : de gauche droite.
- "NON POUR N" dans le cas contraire.
Exemple:
Le nombre 5789 a des chiffres en progression croissante
Le nombre 166 a des chiffres en progression croissante
Le nombre 187 a des chiffres qui ne forment pas une progression ni croissante
ni dcroissante.

Marzouki. F

Page 1 sur 24

Exercice N4 :
Ecrire une analyse, un algorithme et la traduction en Pascal d'un
programme intitul "NOMBRE VOYELLE", qui permet de lire une chane de
caractres CH non vide, dtermine et affiche l'entier S form par le nombre des
voyelles qui figurent dans la chane CH.
Exemple:
Pour CH='BASES DE DONNEES" la valeur de S est 6
Le programme NOMBRE_VOYELLE affichera le rsultat suivant: S = 6.

Exercice N5 :
Ecrire une analyse, un algorithme et la traduction en Pascal d'un programme
intitul "SOMME_CHIFFRES_PAIR", qui permet de lire un entier N strictement
positif, dtermine et affiche l'entier S form par la somme des chiffres pairs qui
figurent dans l'entier N.
Exemple:
Pour N=14276 la valeur de S est 4+2+6 = 12
Le programme SOMME_CHIFFRES_PAIR affichera le rsultat suivant: S=12

Exercice N6 :
Ecrire une analyse, un algorithme et la traduction en Pascal d'un programme
intitul "NOMBRE_AMIS", qui permet de lire deux entiers X et Y strictement
positifs, affiche "X et Y sont AMIS" ou "X et Y ne sont pas AMIS".
X et Y sont dits nombres AMIS si SX = Y et SY = X, avec:
- SX est la somme des diviseurs de X except lui-mme,
- SY est la somme des diviseurs de Y except lui-mme.

Exercice N7 :
Ecrire une analyse, un algorithme et la traduction en Pascal d'un
programme intitul "PROGRESSION_DECROISSANTE", qui permet de lire un
entier N strictement positif et pair, et affiche:
- "OUI POUR N" si le chiffres de N forment une progression dcroissante.
On pourra prendre comme sens : de gauche droite.
- "NON POUR N" dans le cas contraire.
Exemple:
Le nombre 9876 a des chiffres en progression dcroissante
Le nombre 662a des chiffres en progression dcroissante
Le nombre 816 a des chiffres qui ne forment pas une progression ni croissante
ni dcroissante.

Marzouki. F

Page 2 sur 24

Exercice N8 :
Ecrire une analyse, un algorithme et la traduction en Pascal d'un programme
intitul "ADRESSE_EMAIL", qui permet de lire une chane de caractres CH non
vide et affiche:
- "CORRECTE", si la chane CH correspond bien une adresse e-mail,
- "N'EST PAS CORRECTE" dans le cas contraire.
Une adresse e-mail est correcte si elle contient un seul caractre "@".
Exemple:
foulen@benguardene.tn est une adresse e-mail correcte,
foulen@fouleni@benguardene.tn n'est pas une adresse e-mail correcte.

Exercice N9 :
Ecrire une analyse, un algorithme et la traduction en Pascal d'un programme
intitul "CODAGE", qui permet de lire un mot non vide, le coder caractre par
caractre, an ajoutant 2 la valeur du code utilis pour reprsenter ce
caractre, enfin affiche le mot cod. (Ainsi la lettre a (dont le code SCII est 97)
sera transforme en c (dont le code ASCII est 99).
Exemple :
"INFO2007" sera transforme en "KPHQ4229"
Le programme CODAGE affiche le message suivant: la chane code est :
KPHQ4229

Exercice N10 :
Ecrire une analyse, un algorithme et la traduction en Pascal d'un programme
intitul "SOMME", qui lit un entier N (N>10), calcule et affiche la somme S:
1
3
5
2* N 1
S

...
1 2 3
N2

Exercice N11:
Transformer la fonction suivante en une procdure:
Function SOM-DIV (X: Integer): Integer;
Var
i, S :integer;
begin
S:=0;
For i:=1 To X div 2 Do
if (X mod i = 0) then S:= S + i;
SOM-DIV:= S;
End;

Marzouki. F

Page 3 sur 24

Transformer la procdure suivante en une fonction:


Procedure SOM_TAB (V: Tab; N: Integer; Var X: integer);
Var
i: integer;
Begin
X:= V [1];
For i:=2 To N Do
X:= X + V [i];
End ;

Exercice N12 :
Un entier strictement positif M N chiffres est dit nombre de Kaprekar si
lorsquon lve M au carr, la somme du nombre compos des N chiffres de
droite et du nombre form par le reste des chiffres redonne ne nombre
dorigine.
Exemple :
92 = 81 et 1 + 8 = 9
452 = 2025 et 25 + 20 = 45
2972 = 88209 et 88 + 209 = 297
1) Analyser le problme en le dcomposant en modules.
2) Analyser les modules envisags dans la rponse la question n1.
3) Dduire les algorithmes partir des analyses faites dans les questions 1) et

Exercice N13 :
Soit un tableau T de N entiers positifs (5<N<20), on dsire crire un
programme qui permet de remplir un tableau R par les nombres de chiffres
de chaque lment de T, dafficher les lments de R ainsi que lentier qui
admet le plus de chiffres.
NB : Dans le cas o plusieurs entiers ont mme nombre de chiffres, le
programme affiche celui qui apparat le premier dans T.
Exemple :
T

54

17654

4532

36187

997

Lentier qui possde le plus de chiffres est 17654


1) Analyser le problme en le dcomposant en modules.
2) Analyser les modules envisags dans la rponse la question n1.
3) Dduire les algorithmes partir des analyses faites dans les questions 1) et
2).

Marzouki. F

Page 4 sur 24

Exercice N14 :
On se propose de saisir N termes informatiques dans un tableau, avec
1<N<35, de trier ce tableau selon lordre alphabtique croissant, dinsrer
un nouveau terme dans sa bonne place (sans fausser lordre du tableau) et
dafficher le tableau rsultat.
Exemple :
N=5
T : aprs lecture et avant le tri.
CD-ROM GRAVEUR ADSL DISQUETTE FLASH-ISQUE
T : aprs le tri.
ADSL CD-ROM DISQUETTE FLASH-DISQUE GRAVEUR
MOT : BUS
T : aprs linsertion du mot BUS (qui est le rsultat afficher).
ADSL BUS CD-ROM DISQUETTE FLASH-DISQUE GRAVEUR
Questions :
1/ Analyser ce problme en le dcomposant en modules.
2/ Analyser chacun de ces modules.
3/ En dduire les algorithmes correspondants.

Exercice N15 :
La multiplication Russe est une mthode particulire permettant la
multiplication de deux entiers A et B en utilisant seulement la multiplication
par 2, la division par 2 et laddition.
Exemple :
Pour A =17 et B = 19, le produit de A par B se fait comme suit :
A
B
17
19
Le premier nombre est divis par 2 (division entire) et le deuxime est
multipli par 2 : on aura
8
38
Le processus se rpte jusqu avoir dans la premire colonne 1 :
17
19
8
38
4
76
2
152
1
304
Le rsultat est la somme des nombres de la deuxime colonne qui sont en face
des nombres impairs de la premire colonne (donc les nombres de la deuxime
colonne qui sont en face des nombres pairs de la premire colonne seront

Marzouki. F

Page 5 sur 24

ignors).

17
19
8
38
ignor
4
76
ignor
2
152 ignor
1
304
17*19= 19+304=323

On veut crire un programme qui lit deux entiers positifs non nuls et infrieur
100, calcule et affiche le produit de deux entiers par la mthode Russe.
Remarque :
On doit dfinir deux tableaux D et M :
Dans le tableau D, on va ranger lentier A ainsi que tous les rsultats
des divisions successives de A par 2.
Dans le tableau M, on va ranger lentier B ainsi que tous les rsultats
des multiplications successives de B par 2.
Questions :
1/ Analyser ce problme en le dcomposant en modules.
2/ Analyser chacun de ces modules.
3/ En dduire les algorithmes correspondants.

Exercice N16 :
On se propose d'crire une analyse, un algorithme et la traduction en Pascal
dun programme permettant de saisir les lments d'un tableau T de N
entiers de trois chiffres chacun (N est une constante) puis de chercher et
d'afficher les nombres symtriques de ce tableau.
Exemple:
Pour N=7 et T

424 715 133 121 454 616 566


1
2
3
4
5
6
7

Le programme affichera : les nombres symtriques de T sont: 424, 121, 454 et


616
NB: la solution doit comporter au moins deux modules.

Exercice N17 :
On se propose d'crire une analyse, un algorithme et la traduction en Pascal
d un programme permettant de remplir deux tableaux T1 et T2 de N entiers
deux chiffres chacun (2 N 15) puis de former un tableau T tel que un
lment T [i] est le rsultat de la fusion des deux lments T1 [i] et T2 [i] selon
le principe suivant:
- Insrer le chiffre des dizaines du plus petit nombre parmi T1 [i] et T2 [i],
entre les deux chiffres du plus grand nombre parmi T1 [i] et T2 [i].

Marzouki. F

Page 6 sur 24

- Mettre le chiffre des units du plus petit nombre parmi T1 [i] et T2 [i], droite
du nombre obtenu.
Exemples:
- Pour T1 [i] = 52 et T2 [i] = 36, T [i] sera gal 5326
- Pour T1 [i] = 13 et T2 [i] = 47, T [i] sera gal 4173
NB: la solution doit comporter au moins deux modules.

Exercice N18 :
Ecrire une analyse, un algorithme et la traduction en Pascal d u n
p r o g r a m m e intitul TRIANGLE qui permet:
- De remplir un tableau T de n chanes de caractres (2 n 20). Chaque
chane doit avoir nu nombre de caractres suprieur ou gal son indice
dans le tableau.
- D'afficher pour chaque lment T [i] du tableau, les i premiers caractres de la
chane.
Exemple:soit T un tableau de 6 chanes de caractres.
T Bit Modem Ecran Souris Processeur Mmoire
1
2
3
4
5
6
Le programme affichera :
B
Mo
Ecr
Sour
Proce
Mmoir
NB: la solution doit comporter au moins deux modules.

Exercice N19 :
Deux entiers N1 et N2 sont dits frres si chaque chiffre de N1 apparat au
moins une fois dans N2 et inversement.
Ecrire un programme Pascal qui saisit deux entiers N1 et N2, vrifie et affiche
s'ils sont frres ou non.
Exemples:
- Si N1 = 1164 et N2 = 614 alors le programme affichera : N1 et N2 sont frres
- Si N1 = 905 et N2 = 9059 alors le programme affichera : N1 et N2 sont frres
- Si N1 = 405 et N2 = 554 alors le programme affichera : N1 et N2 ne sont pas
frres
NB: la solution doit comporter au moins deux modules.

Exercice N20 :
On se propose de chercher les entiers de l'intervalle [m, n] admettant le plus de
diviseurs. Les entiers m et n vrifient la condition 5 m n 100.

Marzouki. F

Page 7 sur 24

Pour cela crire un programme Pascal permettant de chercher puis d'afficher


ces entiers ainsi que le nombre de leurs diviseurs.
NB: la solution doit comporter au moins deux modules.

Exercice N21 :
Ecrire un programme Pascal qui permet de saisir un entier naturel n (5 p n
p 20) et n rels mettre dans un tableau A puis calcule et affiche la moyenne
arithmtique m des lments de A et leur cart type S.
Sachant que:
n

m (

A [i ]) / n

i1

( A [ i ] m )

i1

NB: la solution doit comporter au moins deux modules.

Exercice N22 :
Ecrire un programme Pascal qui permet de saisir une chane de caractres
CH1 puis d'en extraire les deux nombres forms par les chiffres figurant dans
la chane CH1 (extraction partir de la droite puis extraction partir de la
gauche).
Exemple:
Si CH1 = "A45B3C2"
alors le programme affichera 4532 et 2354
NB: la solution doit comporter au moins deux modules.

Exercice N23 :
Soit la procdure Inconnue suivante :
PROCEDURE Inconnue (T:tab; N:integer; var v:tab);
VAR ;
;
BEGIN
FOR i:=1 To N Do
begin
str(T[i],ch);
ph:='';
j:=length(ch)+1; WHILE (j>1) DO
begin
j:=j-1;
ph:=ph+ch[j];
end;
val(ph,v[i],e);
end;
END;

Marzouki. F

Page 8 sur 24

1) Complter les pointills par les donnes manquantes.


2) Soit le tableau T suivant: (N = 5 )
T
i

41 2304 7919 2451 9


1
2
3
4
5

Quel est le contenu du tableau V aprs appel la procdure Inconnue.


41
2304 7919 2451
V
i
1
2
3
4
3) Dduire le rle ce cette procdure.

9
5

Exercice N24 :
Ecrire une analyse, un algorithme et la traduction en Pascal d un programme
qui permet de trier par ordre dcroissant les lments dun tableau A de n
entiers positifs dans un nouveau tableau B de mme dimension.
n tant un entier vrifiant 5 < n < 25. On utilisera la dmarche suivante :
1. chercher le maximum de A
2. placer ce maximum dans B
3. remplacer le maximum par 1 dans A
4. refaire les tapes 1, 2 et 3 jusqu ce que le tableau A soit entirement
compos de 1.
N.B :
1) Prvoir laffichage des lments du tableau B.
2) La solution doit comporter au moins une fonction et une procdure.

Exercice N25 :
Soit un tableau T1 contenant n lettres majuscules (de A Z), n tant un
entier compris entre 5 et 20. On dsire trier en ordre croissant les lments
de T1 et les ranger dans un tableau T2 en utilisant le principe suivant :
1. chercher la lettre qui a le plus petit code ASCII dans T1
2. a) ranger cette lettre dans T2
b) remplacer cette lettre par * dans T1
3. rpter n fois les tapes 1 et 2.
Ecrire un programme Pascal qui permet de :
Saisir les lments de T1,
Trier les lments de T1 et les ranger dans T2,
Afficher les lments de T2.
N.B : La solution doit comporter au moins une fonction et deux procdures

Marzouki. F

Page 9 sur 24

Exercice N26 :
Ecrire un programme Pascal intitul PROD_SCALAIRE qui permet de
calculer et dafficher le produit scalaire de deux tableaux A et B de n
entiers positifs (n tant un entier compris entre 5 et 50).
N.B :
1) Le produit scalaire de deux tableaux A et B est donn par la formule
suivante:
n

PS A[i ] * B[i ]
i 1

2) La solution doit comporter au moins une fonction et une procdure.

Exercice N27 :
On se propose d'crire un programme Pascal permettant de saisir une chane
de caractres CH et de supprimer les parenthses, si elles existent, ainsi que
leurs contenus.
NB: on suppose que la chane contient au maximum deux parenthses
correctement utilises (une ouvrante et une fermante).
Exemple:
Pour la chane CH= "lire un entier strictement positif (N>0) et l'afficher", le
programme retourne la chane "lire un entier strictement positif et l'afficher"
NB: la solution doit comporter au moins deux modules.

Exercice N28 :
Ecrire un programme Pascal permettant de saisir deux entiers naturels et
d'afficher s'ils sont premiers entre eux ou non.
a et b sont dits premiers entre eux,
si PGCD (a, b) = 1. Exemple:
Pour a=7 et b=4, PGCD (7, 4) = 1 donc 7 et 4 sont premiers entre eux.
Indication:
Sachant que PGCD (a, b) = PGCD (b, r), avec r = a mod b.
Tant que le reste r est non nul, on remplace a par b et b par r. le dernier
reste non nul est alors le
PGCD des deux nombres.
Exemple:
Donc PGCD (323, 247) = 19
a
b Reste (a mod b)
323 247
76
247 76
19
76 19
0
NB: la solution doit comporter au moins deux modules.
Marzouki. F

Page 10 sur 24

Exercice N29 :
Pour chercher le chiffre de chance d'une personne, on procde comma suit: on
additionne les chiffres composants la date de naissance de la personne
concerne. Au nombre obtenu, on refait le mme procd jusqu' ce qu'on
additionne un nombre compos d'un seul chiffre. Ce nombre est le chiffre de
chance.
Exemple :
Soit la date de naissance suivante: "29/09/1999"
On additionne les chiffres de la date da naissance: 2+9+0+9+1+9+9+9 = 48
48 est compos de deux chiffres, on refait le mme traitement: 4+8 = 12
12 est compos de deux chiffres, on refait le mme traitement: 1+2 = 3
3 est compos d'un seul chiffre et c'est le chiffre de chance recherch.
Question:
Ecrire un programme Pascal permettant de saisir la date de naissance d'une
personne sous la forme d'une chane de caractres "jj/mm/aaaa" (aucun
contrle ne sera effectu) puis d'appliquer la mthode cite ci-dessus et
d'afficher le chiffre de chance trouv.
NB: la solution doit comporter au moins deux modules.

Exercice N30 :
Un "tautogramme" est une chane dont chacun de ses mots commence
par la mme lettre (sans distinction entre majuscule et miniscule).
Exemple :
La chane "Le lion lape le lait lentement" est un "tautogramme"
Question :
Ecrire un programme Pascal, permettant de saisir un chane de caractres
compose uniquement de lettres et d'espaces (on suppose que deux mots
conscutifs sont spars par un seul espace); puis d'afficher un message
indiquant si cette chane est "tautogramme" ou non.
NB: la solution doit comporter au moins deux modules.

Exercice N31 :
Un "totalogramme" est une chane dont chacun de ses mots commence et
se termine par la mme lettre.
Exemple:
la chane "AMIRA EMPRUNTE TEMPORAIREMENT A AZIZA SES SOULIERS"
est "totalogramme".

Marzouki. F

Page 11 sur 24

Question :
Ecrire un programme Pascal, permettant de saisir un chane de caractres
compose uniquement de lettres et d'espaces (on suppose que deux mots
conscutifs sont spars par un seul espace); puis d'afficher un message
indiquant si cette chane est "totalogramme" ou non.
NB: la solution doit comporter au moins deux modules.

Exercice N32 :
Soit l'algorithme du programme principal suivant:
0) Dbut Traitement_Tab
1) Rpter
Ecrire ("donner le nombre d'lments") Lire (N)
Jusqu' N dans [2..20]
2) Proc Remplir (N, T)
3) Pour i de 1 (N div 2) Rpter
Aux T [i]
T [i] T [N-i+1]
T [N-i+1] Aux
Fin Pour
4) Fin Traitement_Tab

Questions:

1. Traduire l'algorithme ci-dessus en Pascal


2. Ecrire la procdure Remplir permettant de remplir, d'une manire
automatique et alatoire, un tableau V par p chiffres dcimaux (de 0 9),
avec (2 p 20).
3. Transformer la squence 3) en une procdure Traitement et en tenir
compte dans le programme principal.
4. Afficher les lments du tableau T avant et aprs traitement.
5. Ecrire, sous forme de commentaire, le rle de la procdure Traitement, juste
avant son appel dans le programme principal.

Exercice N33 :
Ecrire un programme Pascal permettant de saisir deux entiers naturels
strictement positifs m et n avec (m 100 et n 100), de calculer puis d'afficher
leur produit p selon le principe suivant:
1. Initialiser la variable produit p 0,
2. Si (m<n) alors permuter les contenus des deux
variables m et n.
3. Ajouter n p.
4. Affecter m la valeur de (m-n).
5. Rpter les actions 2, 3 et 4 jusqu' ce que m ou n soit
nul.
6. Afficher la valeur de p qui est le produit de m par n.
NB: la solution doit comporter au moins deux modules.
Marzouki. F

Page 12 sur 24

Exercice N34 :
Lalgorithme du programme principal:
0) Dbut Liste9
1) Ecrire ("Donner un entier de deux chiffres distincts")
Lire (N)
2) Rpter
N Absolue (N FN Echanger (N))
Ecrire (N)
Jusqu' N=9
3) Fin Liste9

NB: la fonction Echanger permet de permuter les chiffres d'un nombre N donn
form de deux chiffres distincts.
L'algorithme ci-dessus est celui d'un programme permettant de dterminer
et d'afficher la liste des nombres gnrs, partir d'un entier N donn de deux
chiffres distincts, selon le principe suivant:
Exemple:
Si N=19
1. Permuter les chiffres de N, on obtient 91.
2. calculer la valeur absolue de la diffrence entre 91 et 19 pour gnrer le
nombre 72; (72=91-19)
3. rpter les deux tapes prcdentes avec le nombre 72 pour gnrer le
nombre 45; (45=72-27)
4. refaire le mme travail avec chacun des nombres gnrs jusqu' obtenir un
dernier nombre gal 9.
Questions:
1. Traduire cet algorithme en Pascal.
2. Transformer la squence 1) en nue procdure Lecture et y ajouter les
contrles ncessaires pour que N soit compos de deux chiffres distincts et
en tenir compte dans le programme principal.
3. Ecrire la fonction Echanger permettant de permuter les deux chiffres de N.
4. Ajouter, dans le programme principal, une instruction permettant d'afficher
chaque fois le nombre gnr.

Exercice N35 :
Sur les touches (2, 3, 4, 5, 6, 7, 8 et 9) du clavier d'un tlphone portable, sont
inscrites des lettres pour crire des messages en plus des chiffres.
Par exemple, sur la touche 5 sont inscrits les lettres J, K et L.
- pour taper la lettre J on appuie une seule fois.
- Pour taper la lettre K on appuie deux fois
- Pour taper la lettre L on appuie trois fois.
Ecrire un programme Pascal permettant de dterminer et d'afficher le

Marzouki. F

Page 13 sur 24

nombre total d'appuie sur les touches du clavier d'u tlphone portable
pour saisir un mot donn de N lettres, supposes non accentues, (4 N
9).
Indication :
La figure suivante donne la rpartition des lettres sur les touches du clavier
d'un tlphone portable.
NB: la solution doit comporter au moins deux modules.

Exercice N36 :
Ecrire un programme Pascal intitul El_Frequent permettant de saisir les
lments d'un tableau T de N entiers (5 N 20) et d'afficher l'lment qui
apparat le plus dans le tableau T, ainsi que son nombre d'occurrence.
Si plusieurs lments diffrents rpondent la condition, le programme doit en
fournir le premier.
NB: la solution doit comporter au moins deux modules.

Exercice N37 :
Soit l'algorithme du programme principal suivant:

0) Dbut Apparition
1) Rpter
Ecrire ("saisir un mot:") Lire (M)
Test vrai
i0
l long (M)
Tant que (test) et (i<l) faire
ii+1
test Majus (M [i]) dans ["A" .. "Z"]
Fin Tant que
2) Ecrire ("saisir une phrase: "), lie (ph)
3) M FN Majuscule (M)
4) Ph FN Majuscule (ph)
5) Ecrire ("le nombre d'apparition est:", FN Freq (M, ph))
6) Fin Apparition

Exemple:
Si le mot saisi est "bon" et si la phrase saisie est "Bonjour ! ce bonbon est trs
bon, on va acheter une bonne quantit" alors le programme affichera : le
nombre d'apparitions est 5
Questions:
1. traduire cet algorithme en Pascal.
2. transformer les deux squences 1) et 2) en une procdure Saisie et en
tenir compte dans le programme principal.
3. crire la fonction majuscule permettant de convertir une chane donne en

Marzouki. F

Page 14 sur 24

majuscule.
4. crire la fonction Freq permettant de dterminer le nombre d'apparitions
du mot (M) dans la phrase (ph).

Exercice N38 :
Soit un tableau T de n caractres (5 n Nmax) qui ne peuvent tre que "A", "B"
ou "C" et tels que deux lments successifs du tableau ne sont pas gaux. (Nmax
est une constante de valeur 15).
On se propose d'insrer un caractre donn Car dans la premire position
possible dans le tableau T en respectant la rgle ci-dessus mentionn puis
d'afficher le tableau T dans son nouvel tat (aprs insertion).
NB:
Car ne peut tre que "A", "B" ou "C" et ne peut tre insre ni la premire
ni la dernire position du tableau.
On suppose que l'insertion d'un nouveau lment est possible en effet
n<Nmax.
Exemple:
T l'tat initial
B A B C A C B A

T aprs linsertion dun caractre Car="B"


B
A
B
C
B
A
C
B
A

Par la suite on donne l'algorithme suivant:

0) Dbut insertion
1) Ecrire ("Donner nu entier n avec 5 n Nmax"), lire (n)
2) Pour i de 1 n faire
Ecrire ("Donner une lettre A ou B ou C")
Lire (T [i])
Fin Pour
3) Proc Insert_Car (cat, T, n)
4) Proc Affiche (n, T)
5) Fin Insertion

Questions:
1. Traduire e Pascal l'algorithme Insertion ci-dessus.
2. Transformer la squence 1) en une procdure Saisie, ajouter les
conditions ncessaires pour la lecture de n ainsi que des lments de T et
en tenir compte dans le programme principal.
3. Ecrire la procdure Insert_Car permettant d'insrer un caractre Car dans
le tableau T, tout en respectant les conditions mentionnes ci-dessus.
4. Ecrire la procdure Affiche permettant d'afficher les lments de T aprs
insertion de Car.

Exercice N39 :
Ecrire un Programme pascal permettant d'afficher tous les couples d'entiers
Marzouki. F

Page 15 sur 24

naturels (m , n) vrifiant la proprit suivante :


m [1, 100] et n [2, 15] et m figure dans l'criture du produit m*n
Exemples :
1) Si m = 20 et n = 6
alors le produit m*n = 120 contient le nombre 20 dans
ce cas le couple (20,6) sera affich.
2) Si m = 20 et n = 12 alors le produit m*n = 20 * 12 = 240 ne contient pas le
nombre 20
NB: la solution doit comporter au moins deux modules.

Exercice N40 :
On veut crire un programme en Pascal permettant dafficher tous les entiers
naturels forms de quatre chiffres dont la somme donnera un entier dun seul
chiffre.
Exemple :
La somme des chiffres de lentier 2004 est gale 6 (2+0+0+4=6) et par
consquent lentier 2004 sera affich.
NB: la solution doit comporter au moins deux modules.

Exercice N41 :
On appelle poids dun mot la somme des produits de la position de chaque
voyelle contenue dans le mot par son rang dans lalphabet franais.
Une lettre a le mme rang quelle soit crite en majuscule ou en minuscule.
Ecrire un programme Pascal qui calcule et affiche le poids dun mot donn.
Exemple :
Le mot Epreuve a pour poids 165 car :(1*5) + (4*5) + (5*21) + (7*5) = 165
NB: la solution doit comporter au moins deux modules.

Exercice N42 :
Soit la suite (U) dfinie par: U0= 2, U1= 3, Un = Un-1+ 2*Un-2 pour tout n >= 2
En supposant que cette suite est croissante, crire un programme permettant
de lire un entier x (x > 2), de vrifier et d'afficher s'il est un terme de la suite U
ou non. Dans l'affirmative afficher son rang.

Exercice N43 :

Marzouki. F

Page 16 sur 24

Ecrire un programme qui permet de calculer puis d'afficher la racine carre


d'un rel positif x en utilisant la suite suivante: U0 = (1+x)/2, Un+1 = (Un+
x/Un)/2 .
Il s'agit de calculer les premiers termes de cette suite jusqu' ce que la
diffrence entre deux termes successifs devient inferieur ou gale 10 -4. Le
dernier terme calcul est une valeur approche de x 10 -4 prs?

Exercice N44 :
Soit la suite (Pi), i impaire dfinie par:
P1= 2
Pi = Pi-2 * (i-1)/i * (i+1)/i
Ecrire un programme qui permet de calculer et d'afficher les termes de la suite
P jusqu' ce que la diffrence entre deux termes conscutifs devient
infrieure ou gale 10 -4.

Exercice N45 :
Sachant que sin(x) = x/1! - x3/3! + x5/5! - x7/7! + x9/9! - ... Pour x trs proche de
zro.
Ecrire un programme qui permet d'afficher sin(x) en utilisant la formule cidessus. Le calcul s'arrte quand la diffrence entre deux termes conscutifs
devient infrieure ou gale 10 -4. La dernire somme calcule est une valeur
approche de sin(x).

Exercice N46 :
Ecrire un programme Pascal qui permet de convertir un nombre hexadcimal
(base 16) en son quivalent dcimal (base 10).
On demande :
1. Ecrire une procdure remplir qui permet de remplir un tableau T par les
caractres dun nombre hexadcimal donn.
2. Ecrire une fonction puissance qui permet de calculer la puissance dun
entier x par un autre y.
3. Ecrire une fonction somme qui permet de convertir un nombre
hexadcimal en son quivalent dcimal.
4. Ecrire le programme Pascal permettant de convertir un nombre
hexadcimal en son quivalent dcimal.
Exemple :
Si on donne 1EF3, le programme affichera 7923.
Pour convertir le nombre 1EF3 en dcimal, on procde comme suit :

Marzouki. F

Page 17 sur 24

163*1+162*14+161*15+1603=7923.

Exercice N47 :
Ecrire une spcification et un algorithme qui permet de chercher puis dafficher
tous les entiers naturels de lintervalle [1000,2000] qui vrifient la proprit
suivante :
La somme des chiffres des units et des dizaines est gale au produit du chiffre
des centaines par celui des milliers.
Exemple : Lentier 1954 sera affich car 4+5=9*1.
Questions :
1. Donner la spcification de ce problme.
2. Dduire lalgorithme.

Exercice N48 :
On veut crire un algorithme permettant de saisir les lments de deux tableaux
Ta et Tb contenant respectivement p et q entiers (3<=p<=20 et 3<=q<=20) puis
dterminer si Ta est un sous_tableau de Tb.
C'est--dire que tous les lments de Ta figurant dans lordre de Tb.
Exemple :

Ta 0 3 5

Tb 2 0 3 5 0

Lalgorithme doit rpondre Ta est sous tableau de Tb.


Questions :
1. Donner la spcification de ce problme.
2. Dduire lalgorithme.

Exercice N49 :
On se propose dcrire un programme qui permet de calculer puis dafficher les
premiers termes de la suite suivante :

U0= (1+x)/2
Un+1= (Un+x/Un)/2

Il sagit de calculer les premiers termes de cette suite jusqu ce que la diffrence
entre deux termes successifs devienne infrieure ou gale 10 -4.

Marzouki. F

Page 18 sur 24

NB : La solution propose doit comporter obligatoirement une fonction et une


procdure.
Vous pouvez utiliser un tableau de n rels, pour sauvegarder les premiers
termes de la suite Un..
x est un rel donn.
1. Ecrire une spcification et un algorithme de ce programme.
2. Ecrire une spcification et un algorithme pour chacun des deux modules.

Exercice N50 :
On veut remplir un tableau T avec n chanes de caractres, chaque chane doit
tre de taille infrieure 20 et suprieure 10, ensuite trier en ordre croissant
les chanes de taille pair et en ordre dcroissant les chanes de taille impair, et en
fin afficher le contenu du tableau T, pour cela on demande dcrire :
1. La spcification et lalgorithme dun module Remplir , qui permet de
remplir un tableau T avec n chanes en tenant compte du contrle de saisi.
2. La spcification et lalgorithme dun module Tri_Selection qui permet de
trier une chane de caractres en ordre croissant selon la mthode de tri par
slection.
3. La spcification et lalgorithme dun module Tri_bulle qui permet de trier
une chane de caractres en ordre dcroissant selon la mthode tri bulles.
4. La spcification et lalgorithme dun module Afficher qui permet dafficher
les lments dun tableau.
La spcification et lalgorithme du programme principal qui fait appel aux
diffrents modules envisags prcdemment pour raliser le traitement nonc
ci-dessus.

Exercice N51 :
On veut crire un programme qui permet de calculer le PPCM de n entiers, avec
n un entier donn (3 n 10).
1. Dcomposer ce problme en modules.
2. Donner une spcification et un algorithme du programme qui permet de
rsoudre ce problme.
3. Donner pour chaque module une spcification et un algorithme.

Exercice N52 :
Un carre magique est un tableau dentiers, ou les sommes des
colonnes, des lignes et des diagonales sont toutes gales. Dans
lexemple ci contre, le total commun, ou somme magique, de ce
carre est 15, et sa taille, ou ordre, est 3.
1. On considre une constante OrdreMax valant 10, et un type Carre_t qui
est un tableau dentiers en 2 dimensions, dont les indices de ligne et de

Marzouki. F

Page 19 sur 24

2.
3.

4.

5.

6.

colonne vont de 1 OrdreMax. Quelles sont les 2 faons de dclarer


Carre_t ?
Ecrire la procdure AffiCarre(c : Carre_t; n : integer); qui reoit en
paramtres un carre c de taille nn et laffiche a lcran.
Ecrire une fonction CarreMagique(c : Carre_t; n : integer) : boolean; qui
reoit en paramtres un carre c de taille nn, puis renvoie TRUE si les
sommes des colonnes, des lignes et des diagonales de c sont toutes gales,
FALSE sinon. (Conseil : les 2 diagonales sont parcourues avec c [i, i] et
c[i,n-i+1], respectivement).
On dit quun carr est normal si les entiers qui sont dans le carr
napparaissent quune fois et sont tous compris entre 1 et n (cest le cas de
lexemple ci-dessus). Ecrire une fonction CarreNormal(c : Carre_t; n :
integer) : boolean; qui reoit en paramtres un carr c de taille nn, puis
renvoie TRUE si le carre est normal, FALSE sinon. (Conseil : utiliser un
tableau de boolens pour marquer les entiers dj utilises).
Intressons-nous maintenant au cas des carrs magiques dordre 3 ; nous
souhaitons crire une procdure qui les trouve tous. Lalgorithme que lon
demande de programmer part de lide suivante : on constate que tout
carr magique peut se dcomposer sous la forme ci-contre, a partir de 4
entiers e, f, g, h et pour une somme magique s. Il suffit donc de gnrer
toutes les combinaisons dentier e, f, g, h entre 1 et 9 (soit 4 boucles
imbriques) et de complter chaque carr comme
e
f
s-e-f
indiqu. Les carrs gnrs ne sont pas forcment
g
h
s-g-h
magiques ni normaux (il faudra faire les tests), mais le s-e-g s-f-h s-e-h
nombre de carrs gnrs nest que de 94= 6561.
Ecrire une procdure CaMaNo3(s:integer); qui cherche avec cet
algorithme tous les quadruplets formant un carr magique normal de
somme magique s et affiche les carrs solution.
Ecrire un programme principal qui demande une somme magique puis
appelle CaMaNo3. Indiquer en commentaire lemplacement des types et
fonctions (mais sans les recopier).

Exercice N53 :
On veut crire un programme qui permet de remplir un tableau T par n entiers
positifs tris dans lordre croissant (2<=n<=20), puis dafficher les entiers
manquants entre le premier et le dernier lment de ce tableau.
Exemple :
Si n = 7 et si T est le tableau suivant :
5

10

12

15

Le programme affichera : les entiers manquants sont : 7, 11, 13, 14


1. Dcomposer ce problme en modules.
2. Ecrire une spcification et un algorithme pour le programme principal.
3. Ecrire une spcification et un algorithme pour chaque module.

Marzouki. F

Page 20 sur 24

Exercice N54 :
On veut crire un programme qui permet de:
Afficher un triangle dtoiles de hauteur n avec : 1 symbole * sur la 1 re
ligne, 2 symboles * sur la 2me ligne, etc. Les toiles seront disposes
comme ceci :

1.
2.
3.

*
**
***
****
*****
Afficher un triangle dtoiles de hauteur n dont la pointe sera centre,
comme ceci :
*
***
*****
*******
*********
Dcomposer ce problme en modules.
Ecrire une spcification et un algorithme pour le programme principal.
Ecrire une spcification et un algorithme pour chaque module .

Exercice N55 :
On veut crire un algorithme qui permet de transposer une matrice carre.
Lopration de transposition consiste inverser les lignes et les colonnes en
effectuant une symtrie par rapport la diagonale principale de la matrice.
Exemple :

1 2 3
4 5 6
7 8 9

1
2
3

4 7
5 8
6 9

1. Dcomposer ce problme en modules.


2. Ecrire une spcification et un algorithme pour le programme principal.
3. Ecrire une spcification et un algorithme pour chaque module.

Exercice N56 :
Une technique ultrieure de cryptographie consista oprer non avec un
dcalage systmatique, mais par une substitution alatoire. Pour cela, on utilise
un alphabet-cl, dans lequel les lettres se succdent de manire dsordonne,
par exemple :
HYLUJPVREAKBNDOFSQZCWMGITX

Marzouki. F

Page 21 sur 24

Cest cette cl qui va servir ensuite coder le message. Selon notre exemple, les
A deviendront des H, les B des Y, les C des L, etc.
Ecrire une analyse, un algorithme et le programme Pascal qui effectue ce
cryptage (lalphabet-cl sera saisi par lutilisateur, et on suppose qu'il effectue
une saisie correct).

Exercice N57 :
On se de ranger dans un tableau V les numros des cartes didentit nationale
des N lves dun lyce.
Deux lves ne peuvent pas avoir un mme numro de carte didentit nationale.
Un numro de carte didentit nationale est compos obligatoirement de huit
chiffres.
1. Analyser ce problme.
2. En dduire lalgorithme correspondant.
3. Ecrire le programme pascal.

Exercice N58 :
Ecrire un programme Pascal qui permet de coder en morse un mot de passe,
suppos compos de N chiffres dcimaux (4N8), puis dafficher ce code.
Pour une meilleure lisibilit du rsultat, les chiffres cods en morse seront
spars par un point dinterrogation ( ?) lors de laffichage.
Tableau dquivalence chiffres / codes morses :
0
1
2
3
4
5
6
7
8
9
----- .---- ..--- -- .- .. -. -- ---.. ----.
Exemple :
Pour le mot de passe 123456, le programme affichera :
.---- ? ..--- ? -- ? .- ? .. ? -. ?
1. Analyser ce problme.
2. En dduire lalgorithme correspondant.
3. Ecrire le programme pascal.

Exercice N59 :
Ecrire un programme Pascal qui permet de :
Remplir un tableau T par n chanes de caractres, avec (5n30).
Eliminer tous les caractres non alphabtiques de chaque lment de T.

Marzouki. F

Page 22 sur 24

Afficher les chanes non vides du tableau T, prcdes chacun de son


indice.
N.B : On suppose que les lettres accentues ne sont pas considres comme des
lettres alphabtiques.

Exemple :
Pour le tableau T suivant, avec n=8 :
T Ab ?23k 2kj !mn tkrmob Z56a8 B&12a :c 43 ?8\% 7in8fo (90,k ?
1

Le programme affiche les chanes suivantes


1
2
3
4
5
7
8

:
Abk
kjmn
tkrmob
Za
bac
info
ok

Exercice N60 :
Ecrire un programme Pascal qui permet de :
Remplir un tableau T, dune faon automatique et alatoire, par n entiers
strictement positifs, infrieurs ou gaux 1000, avec (5n30).
Vrifier pour llment de T dindice p donn, sil est gal la somme dun
certain nombre dlments conscutifs de T qui le prcdent
immdiatement. Dans ce cas, le programme affiche ces lments, sinon il
affiche Conditions non vrifie.
Exemple 1 :
Pour le tableau T suivant, avec n=7 et p=5 :
T 3 2 4 6 12 18 20
1

Le programme affiche : 6, 4,2


Exemple 2 :
Pour le tableau T suivant, avec n=7 et p=3 :
T 3 2 4 6 12 18 20
1

Le programme affiche : Conditions non vrifie

Marzouki. F

Page 23 sur 24

Exercice N61 :
On se propose dcrire un programme Pascal permettant de dterminer et
dafficher un code partir dun entier N strictement positif et suprieur 100,
selon le principe suivant :
1. Calculer la somme S des chiffres qui composent le nombre N.
2. Recommencer le calcul de la somme des chiffres obtenue S tant que celleci nest comprise entre 1 et 9.
3. Le code sera le nombre form par N auquel on place sa gauche la
dernire somme obtenue.
Exemple:
Pour N=9867, le programme affichera : Le code est : 39867 .
On effet :
Pour N=9867 :
La 1re somme S vaut 30 (car 9+8+6+7=30).
La 2me somme S 3 (car 3+0=3).
Etant donn que la dernire somme S, qui vaut 3, est comprise entre 1 et
9, le code sera 39867.

Exercice N62 :
On se propose dcrire un programme Pascal permettant de dterminer et
dafficher si un entier N saisi (N>9) est divisible par 9 ou non, en appliquant la
mthode suivante :
1. On fait la somme du 1er et du 2me chiffre de N.
2. Si la somme obtenue est suprieure ou gale 9, on lui soustrait 9.
3. On ajoute ensuite cette somme et on lui applique la rgle 2(on lui
retranche 9 si elle est suprieure 9) et ainsi de suite jusquau dernier
chiffre de N.
4. Si le rsultat final est nul, le nombre N est alors divisible par 9.
Exemple:
Pour N=65493 le programme effectuera les oprations suivantes :
6+5=11 (11 est suprieur ou gal 9, on lui soustrait 9, on obtient 2).
2+4=6 (6 est strictement infrieur 9).
6+9=15 (15 est suprieur ou gal 9, on lui soustrait 9, on obtient 6).
6+3=9 (9 est suprieur ou gal 9, on lui soustrait 9, on obtient 0).
Le rsultat est nul et tous les chiffres de N ont t traits, donc le nombre 65493
est divisible par 9. En effet, 65493=9*7277.

Marzouki. F

Page 24 sur 24