Vous êtes sur la page 1sur 29

Université Saint-Esprit de Kaslik

Faculté des Sciences et de Génie informatique

INF 214
Programmation I

Manuel De Laboratoire

Enseignants :
Wajdi ABBOUD, Charbel FARES, Pierre MURR

Printemps 2006-2007
USEK - FSGI Manuel de Laboratoire INF214

ENTREES / SORTIES + CALCUL


Exercice 1
Écrire un programme C++ qui affiche à l’écran « Bonjour » sur la première ligne et « Au
revoir » sur la deuxième ligne.

Exemple d’exécution :
Bonjour
Au revoir

Exercice 2
Écrire un programme C++ qui demande à l'utilisateur un entier et l'affiche à l'écran.

Exemple d’exécution :
Entrez un entier : 5
L'entier est : 5

Exercice 3
Écrire un programme C++ qui saisit un entier x, et affiche à l’écran sa valeur absolue.

Exemple d’exécution :
Entrez x : -5
La valeur absolue = 5

Exercice 4
Écrire un programme C++ qui saisit l’âge d’une personne, puis affiche à l’écran l’âge de
cette personne dans 10 ans

Exemple d’exécution :
Quel âge avez-vous? 19
Dans 10 ans, vous en aurez 29

Exercice 5
Écrire un programme C++ qui ajoute et soustrait deux nombres, puis affiche les deux
résultats à l’écran.

Exemple d’exécution :
Entrez deux nombres A et B : 5 4
A + B = 9
A - B = 1

2
USEK - FSGI Manuel de Laboratoire INF214

Exercice 6
Écrire un programme C++ qui saisit 3 entiers entrés par l'utilisateur, calcule leur
moyenne, puis affiche le résultat à l’écran.

Exemple d’exécution :
Entrez le premier nombre : 4
Entrez le deuxième nombre : 5
Entrez le troisième nombre : 11

La moyenne de ces nombres est : 6.6666

Exercice 7
Écrire un programme C++ qui multiplie et divise deux nombres non nulles, puis affiche
les deux résultats à l’écran.

Exemple d’exécution :
Entrez deux nombres non nuls A et B : 5 4
A * B = 5 * 4 = 20
A / B = 5 / 4 = 1.25

Exercice 8
Écrire un programme C++ qui saisit 4 valeurs numériques non nulles, et calcule le
1
résultat de la formule R = , puis l’affiche à l’écran.
1 c
+
a+b d

Exemple d’exécution :

Entrez 4 valeurs numériques non nulles A, B, C et D : 1 3 9 12


Le résultat R de la formule est : 1

Exercice 9
Écrire un programme C++ qui saisit 2 entiers A et B, calcule et d’afficher sur écran : AB,
l'hypoténuse d'un triangle rectangle de côtés A et B, ainsi que la tangente de A en
n'utilisant que les fonctions sin et cos.

Exemple d’exécution :
Entrez la valeur de A : 2
Entrez la valeur de B : 5

2 exposant 5 est : 32
L’hypoténuse du triangle rectangle est : 5.385165
La tangente de A est : -2.18540

3
USEK - FSGI Manuel de Laboratoire INF214

Exercice 10
Écrire un programme C++ qui calcule et affiche l'aire (surface) d'un triangle, après avoir
saisi les longueurs des trois côtés. Utilisez la formule: S2 = P (P –A) (P –B) (P –C) où
A, B, C sont les longueurs des trois côtés et P le demi périmètre du triangle.

Exemple d’exécution :
Entrez les valeurs de A, B et C : 4 5 6
Le carré de l'aire du triangle est : 98.4375

Exercice 11
Écrire un programme C++ qui met en pratique le théorème de Pythagore généralisé : « Le
carré de la longueur du 3ème côté d’un triangle est égal à la somme des carrés des deux
autres, diminuée du double du produit de ces longueurs par le cos de l’angle en commun :
AC = AB + BC − 2 * AB * BC * Cos[(BA, BC )] »
2 2 2

Exemple d’exécution :
Entrez les longueurs des côtés AB et BC : 3 4
Entrez la valeur de l'angle (BA, BC) en degrés : 60

Le carré du troisième côté est : 13.0

Exercice 12
Écrire un programme C++ qui saisit 4 entiers non nuls, et calcule le résultat de la
⎡ B %C ⎤
formule R = ⎢ A + ⎥ * [( A et B ) ou C ] , puis l’affiche à l’écran.
⎣ D ⎦

Exemple d’exécution :
Entrez 4 entiers non nuls A, B, C et D : 1 5 2 16
Le résultat R de la formule est : 3.75

Exercice 13
Écrire un programme C++ qui saisit 2 valeurs numériques non nulles, et calcule le
a
résultat de la formule R = 2 * π * , puis l’affiche à l’écran.
b

Exemple d’exécution :
Entrez 2 valeurs numériques non nulles A et B : 1 4
Le résultat R de la formule est : 3.14159

4
USEK - FSGI Manuel de Laboratoire INF214

Exercice 14
Écrire un programme C++ qui saisit 3 valeurs numériques non nulles, et calcule le
⎡ −( B −C )2 ⎤
⎢ ⎥
1 ⎢⎣ A2 ⎥⎦
résultat de la formule R = *e , puis l’affiche à l’écran.
2 *π * A

Exemple d’exécution :
Entrez 3 valeurs numériques non nulles A, B et C : 0.5 1.25 0.75
Le résultat R de la formule est : 0.207554

Exercice 15
Écrire un programme C++ qui saisit 3 valeurs numériques non nulles, et calcule le
⎡e A + e−A ⎤
résultat de la formule R = ⎢ A −A ⎥
* B C , sans utiliser la fonction POW, puis l’affiche.
⎣e − e ⎦

Exemple d’exécution :
Entrez 3 valeurs numériques non nulles A, B et C : 60 2 0.5
Le résultat R de la formule est : 1.41421

5
USEK - FSGI Manuel de Laboratoire INF214

INSTRUCTIONS DE CONTROLE

Exercice 16
Écrire un programme C++ qui multiplie deux nombres entrés par l’utilisateur et diviser le
résultat par un troisième saisi, si et seulement si ce dernier est différent de 0, puis afficher
le résultat.

Exemple d’exécution :
Entrez trois nombres A, B et C : 3 5 10
a * b / c = 3 * 5 / 10 = 1.5

Exercice 17
Écrire un programme C++ qui affiche à l’écran « Vous êtes encore jeune » si l’âge saisi
< 60, sinon affiche « Vous êtes assez âgé »

Exemple d’exécution :
Entrez votre âge : 35
Vous êtes encore jeune

Exercice 18
Écrire un programme C++ qui indique si l’entier saisi est pair ou impair.

Exemple d’exécution :
Entrez un nombre x : 5
Le nombre entré est impair

Exercice 19
Écrire un programme C++ qui indique si l’entier saisi est négatif, nul ou positif.

Exemple d’exécution :
Entrez un nombre : -5
Le nombre entré est négatif

Exercice 20
Écrire un programme C++ qui saisit 3 valeurs numériques n1, n2 et n3 – représentant les
3 notes d’un étudiant, calcule leur moyenne arithmétique M, puis affiche la mention selon
les critères suivants:

6
USEK - FSGI Manuel de Laboratoire INF214

¾ Échec, M < 10
¾ Passable, 10 ≤ M < 12
¾ Assez Bien 12 ≤ M < 14
¾ Bien 14 ≤ M < 16
¾ Très Bien 16 ≤ M < 18
¾ Excellent M ≥ 18

Exemple d’exécution :
Entrez les 3 notes n1, n2 et n3 : 15.5 17 18.5
La moyenne M de ces notes est de : 17
La mention de cet étudiant est : "Très Bien"

Exercice 21
Écrire un programme C++ qui saisit les valeurs de deux variables entières A, B et,
suivant la valeur de A+B, calcule et affiche une valeur différente pour C. Le tableau
suivant indique le calcul à faire selon la (les) valeur(s) de A+B:

Si A + B = -1 C=A+2
Si A + B = 1 ou 2 C=A*B2
Si A + B = 3 ou 4 C = 3 (B – A)
Pour toute autre valeur C=A+B

Exemple d’exécution :
Entrez la valeur de A : 1
Entrez la valeur de B : 2
C = 3 * (2 – 1) = 3

Exercice 22
Une société décide d’accorder une bonification de 500$ aux Analystes, 400$ aux
programmeurs et 250$ aux opérateurs et secrétaires. Écrire un programme C++
permettant:
- d’obtenir le salaire hebdomadaire,
- d’obtenir le poste de travail: c’est un seul caractère dont:
`a` pour analyste
`p` pour programmeur
`o` pour opérateur
`s` pour secrétaire
- de calculer le bonus à accorder dépendant du poste,
- d’afficher à l’écran un message du genre:
C’est un programmeur qui gagne 575,50$ par semaine et reçoit 400$ de bonus.

Indice: Utiliser la selection multiple switch pour écrire ce programme.

7
USEK - FSGI Manuel de Laboratoire INF214

Exercice 23
Écrire un programme C++ qui saisit un entier N – représentant le nombre d’heures de
travail par semaine d’un employé – ainsi que le salaire de base de l’entreprise, puis
calcule le salaire hebdomadaire de l’employé, selon les taux (rapport du salaire payé sur
le salaire de base) suivants :
¾ Pour les 39 premières heures, le taux K = 1
¾ De la 40ème à la 44ème heure, le taux K = 1.2
ème ème
¾ De la 45 à la 49 heure, le taux K = 1.5
¾ À partir la 50ème heure, le taux K = 1.8

Exemple d’exécution :
Entrez le nombre d'heures de l'employé : 46
Entrez le salaire de base de l'entreprise : 50
Le salaire hebdomadaire de cet employé est de : 2580

Exercice 24
Écrire un programme C++ qui saisit 3 entiers A, B, C (coefficients d’un équation du
second degré), calcule et affiche les solutions de l’équation " A * x 2 + B * x + C = 0 ".

Exemples d’exécution :
Entrez les valeurs de A, B et C : 1 -2 1
L'équation (1) x^2 + (-2) x + (1) = 0 a une solution double {1}

Entrez les valeurs de A, B et C : 1 -3 2


L'équation (1) x^2 + (-3) x + (2) = 0 a deux solutions {1, 2}

Entrez les valeurs de A, B et C : 1 1 1


L'équation (1) x^2 + (1) x + (1) = 0 n'a pas de solutions réelles

Exercice 25
Écrire un programme C++ qui saisit 3 entiers A, B et C afin de calculer et d’afficher sur
écran la plus petite valeur entre eux. Utiliser les opérateurs conditionnels "?" et ":".

Exemple d’exécution :
Entrez 3 entiers A, B et C : 14 5 79
La plus petite valeur est : 5

8
USEK - FSGI Manuel de Laboratoire INF214

STRUCTURES DE REPETITION

Exercice 26
Écrire un programme C++ qui demande à l’utilisateur de saisir un entier N >1 et affiche
la somme de tous les entiers compris entre 1 et N.

Exemple d’exécution :
Entrez un entier N > 1 : 5
La somme des entiers de 1 à 5 est de : 15

Exercice 27
Écrire un programme C++ qui calcule la fonction factorielle d’un entier positif N et
affiche le résultat.
Rappel : Factoriel (1) = Factoriel (0) = 1, et Factoriel (N) = 2 x 3 x … x N

Exemple d’exécution :
Entrez un entier positif N : 5
Factoriel (5) = 120

Exercice 28
Écrire un programme C++ permettant de :
- Calculer et afficher la somme de s = 13+19+25+31+ …+85
- Afficher les multiples de 5 parmi les nombres de cette série
- Afficher le 4ème nombre de cette série. Le programme devrait afficher le suivant :

La somme est égale à : 637


Les multiples de 5 sont : 25 55 85
Le quatrième élément est le : 31

Exercice 29
Écrire un programme C++ qui calcule le nombre de combinaisons de K éléments choisis
N!
parmi N éléments. Rappel : C NK =
K !*( N − K )!

Exemple d’exécution :
Entrez deux entiers positifs N et K : 4 5

C (4, 5) = 5! / [4! * (5-4)!] = 120 / [24*1] = 5

9
USEK - FSGI Manuel de Laboratoire INF214

Exercice 30
Écrire un programme C++ qui saisit une suite de nombres entiers, limitée par l’entrée de
0, et compte le nombre d’entiers positifs.

Exemple d’exécution :
Entrez un nombre entier (pour arrêter, entrez 0) : 1
Entrez un nombre entier (pour arrêter, entrez 0) : -2
Entrez un nombre entier (pour arrêter, entrez 0) : 5
Entrez un nombre entier (pour arrêter, entrez 0) : 10
Entrez un nombre entier (pour arrêter, entrez 0) : -4
Entrez un nombre entier (pour arrêter, entrez 0) : 0

Le nombre d'entiers positifs entrés est : 3

Exercice 25
Écrire un programme C++ qui saisit N valeurs numériques et affiche les 2 plus grandes
valeurs lues.

Exemple d’exécution :
Entrez le nombre de valeurs à entrer : 5
Entrez la valeur # 1 : 10
Entrez la valeur # 2 : 5
Entrez la valeur # 3 : 100
Entrez la valeur # 4 : 23
Entrez la valeur # 5 : 71
Les 2 plus grandes valeurs sont 71 et 100

Exercice 32
Écrire un programme C++ qui saisit un entier stictement positif N et affiche à l’écran un
triangle de N lignes "3". La 1ère ligne est constituée d’un seul "3", la 2ème de 2 "3" …

Exemple d’exécution :
Entrez un entier N strictement positif : 7
3
33
333
3333
33333
333333
3333333

10
USEK - FSGI Manuel de Laboratoire INF214

Exercice 33
Écrire un programme qui permet de saisir un entier entre 2 et 10. Dessiner la forme (voir
exécution) dans le cas où le nombre est valide en vous servant de boucles for.

Exemple d'exécution :
Introduire un entier entre 2 et 10 : 4
Forme dessinée :

1
2 2
3 3
4 4
3 3
2 2
1

Exercice 34
Écrire un programme C++ qui permet de saisir un entier positif impair inférieur à 10.
Dessiner la forme (voir exécution) dans le cas où le nombre est valide en vous servant de
boucles for.

Exemple d'exécution :
Introduire un entier positif impair inférieur à 10: 5
Forme dessinée :

1 1
2 2
3
4 4
5 5

Exercice 35
Écrire un programme C++ qui permet à l’utilisateur de saisir le rang d’une chanson
chantée par Céline Dion afin d’afficher à l’écran son titre. Ce traitement est répété tant
que l’utilisateur décide de continuer. Utiliser l’instruction « SWITCH »

Rang: Titre:
1 « On change pas »
2 « J’attendais »
3 « My Heart will go on »
4 « When I need you »
5 « En attendant ses pas »
6 « S’il suffisait d’aimer »

11
USEK - FSGI Manuel de Laboratoire INF214

Exercice 36
Écrire un programme C++ qui demande à l’utilisateur de saisir un entier positif, afin d’en
afficher la décomposition en unités, dizaines, centaines, 104, 105, etc. Le programme se
termine si l’entier est nul. Toute valeur négative doit être signalée comme non autorisée.

Exemple d’exécution :
Entrez un entier positif : 1559
9 unité(s)
5 dizaine(s)
5 centaine(s)
1 millier(s)

Entrez un entier positif : -5


Valeur non autorisée

Entrez un entier positif : 0


Programme terminé

Exercice 37
Écrire un programme C++ qui saisit un entier N et l’affiche à l’envers. Si l’entier est
négatif, garder le signe à gauche.

Exemple d’exécution :
Entrez un entier N : -12345
L'entier à l'envers est : -54321

Exercice 38
Écrire un programme C++ qui saisit deux entiers M et N, afin de saisir M suites de N
réels, puis calcule la moyenne de chaque suite ainsi que la moyenne globale.

Exemple d’exécution :
Entrez deux entiers M et N : 3 5

Entrez les 5 valeurs de la suite # 1 : 1 3 6 9 11


La moyenne de cette suite est de : 6

Entrez les 5 valeurs de la suite # 2 : 0.5 3.5 2.5 1.5 4.5


La moyenne de cette suite est de : 2.5

Entrez les 5 valeurs de la suite # 3 : 18 1 5.375 9.5 13.625


La moyenne de cette suite est de : 9.5

La moyenne globale est de : 6

12
USEK - FSGI Manuel de Laboratoire INF214

TABLEAUX A UNE DIMENSION

Exercice 39
Écrire un programme C++ qui saisit la dimension N d’un tableau d’entiers T (dimension
maximale 20 composantes), remplit le tableau par des valeurs entrées au clavier et affiche
les éléments impairs du tableau T. Calculer et afficher ensuite la somme des éléments.

Exemple d’exécution :
Entrez le nombre d'éléments du tableau T (max = 20) : 5
Entrez 5 entiers :
T [0] = 11
T [1] = 22
T [2] = 33
T [3] = 55
T [4] = 22

Les éléments impairs de T sont : 11 33 55


La somme totale est de : 143

Exercice 40
Écrire un programme C++ qui saisit la dimension N d’un tableau d’entiers T (dimension
maximale 20 composantes), le remplit par des valeurs entrées au clavier, puis calcule et
affiche les valeurs maximale et minimale des éléments du tableau.

Exemple d’exécution :
Entrez le nombre d'éléments du tableau T (max = 20) : 5
Entrez 5 entiers :
T [0] = 11
T [1] = 22
T [2] = 33
T [3] = 55
T [4] = 22

La valeur maximale de T est : 55


La valeur minimale de T est : 11

Exercice 41
Écrire un programme C++ qui saisit la dimension N d’un tableau d’entiers T (dimension
maximale 50 composantes), et le remplit par les multiples de 2, compris entre 0 et 2N–2,
puis affiche toutes les valeurs du tableau à l’écran, au plus 7 par ligne séparés de 2
espaces.

13
USEK - FSGI Manuel de Laboratoire INF214

Exemple d’exécution :
Entrez le nombre d'éléments du tableau T (max = 50) : 12

Les multiples de 2 entre 0 et 22 sont :


0 2 4 6 8 10 12
14 16 18 20 22

Exercice 42
Écrire un programme C++ qui saisit la dimension N d’un tableau d’entiers F (dimension
maximale 50 composantes), le remplit par les valeurs de la suite de Fibonacci, puis
affiche toutes les valeurs à l’écran, au plus 12 par ligne séparés de 2 espaces.
Rappel : La suite de Fibonacci est définie comme tel : F0 = F1 = 1 ; et Fi = Fi–1 + Fi–2
où i ∈ [2, N ]

Exemple d’exécution :
Entrez le nombre d'éléments de la suite Fibonacci (max = 50) : 10
Les valeurs calculées sont :
1 1 2 3 5 8 13 21 34 55

Exercice 43
Écrire un programme C++ qui saisit une suite de valeurs numériques (longueur maximale
100 valeurs), limitée par l’entrée de 0, calcule leur moyenne, et affiche à côté de chaque
valeur son écart de la moyenne (valeur absolue de la différence entre la valeur et la
moyenne). Maximum 5 affichages par ligne séparés par 3 espaces.

Exemple d’exécution :
Entrez une suite de valeurs numériques (max = 100), terminée par 0 :
1
1.23
7.65
7.88
0

La moyenne est : 4.44


Ecarts de la moyenne :
1 (-3.44) 1.23 (-3.21) 7.65 (3.21) 7.88 (3.44)

Exercice 44
Écrire un programme C++ qui permet de calculer et d’afficher la moyenne M des
éléments d’un tableau de type réel V (de dimension N ≤ 10) et la somme S donnée par la
formule:

S = (V[0] − M) 0 + (V[1] − M)1 + (V[2] − M) 2 + ..... + (V[n − 1] − M) N-1

14
USEK - FSGI Manuel de Laboratoire INF214

Le programme doit:
1- Saisir la valeur de n et les éléments du tableau V.
2- Calculer et afficher la moyenne M des éléments de V.
3- Calculer et afficher la somme S.

Exemple d’exécution :
Entrez le nombre d'éléments du tableau V (max = 10) : 5

Entrez 5 valeurs réelles : 2 4 5 6 3

La moyenne M de V est : 4
La somme S est : 11

Exercice 45
Écrire un programme C++ qui saisit la dimension N d’un tableau d’entiers T (dimension
maximale 30 composantes), le remplit par des valeurs entrées au clavier, puis copie les
valeurs strictement positives dans un tableau TPOS et les valeurs strictement négatives
dans un tableau TNEG. Affichez toutes les valeurs du tableau TPOS et TNEG à l’écran,
au plus 7 éléments par ligne séparés de 2 espaces.

Exemple d’exécution :
Entrez le nombre d'éléments du tableau T : 9

Entrez 9 entiers : 7 -5 3 -12 13 11 -32 77 -14

Les éléments du tableau TPOS sont : 7 3 13 11 77


Les éléments du tableau TNEG sont : -5 -12 -32 -14

Exercice 46
Écrire un programme C++ qui saisit un entier N, représentant la taille de la suite de
valeurs numériques entrées au clavier (N ≤ 30), et crée un nouveau tableau contenant ces
valeurs arrangées par ordre croissant. Ensuite le programme affiche ce nouveau tableau à
l’écran, au plus 10 éléments par ligne séparés de 2 espaces

Exemple d’exécution :
Entrez le nombre de valeurs numériques à saisir (max = 30) : 9

Entrez 9 valeurs numériques :


7 -5 3 -12 13 11 -32 77 -14

Par ordre croissant, les valeurs sont :


-32 -14 -12 3 7 11 13 77

15
USEK - FSGI Manuel de Laboratoire INF214

TABLEAUX A DEUX DIMENSIONS (MATRICES)

Exercice 47
Soit le tableau d’entiers à deux dimensions suivant :

A[3][3]:
0 1 2
0 2 5 225
1 8 104 102
2 100 66 3

Écrire un programme C++ permettant de lire le tableau A, affecter à 0 (zéro) la diagonale


de ce tableau, tester si les valeurs des éléments dans A exclus de la diagonale affectée à 0
sont inférieurs ou égales à 100 les remplacer par la valeur 2 et ceux qui sont supérieurs à
100 les remplacer par la valeur –2 comme suivant :

A[3][3] devient :
0 1 2
0 0 2 -2
1 2 0 -2
2 2 2 0

Exercice 48
Écrire un programme C++ qui permet de lire les éléments d’un tableau à deux
dimensions de type entier A[n][m], mettre les éléments de A[n][m] dans un tableau à une
dimension V[k], k= 1, 2, 3, …n*m (n et m≤ 4), afficher les éléments de V et enfin
calculer et afficher le nombre des éléments pairs de V.
n et m : désignent respectivement le nombre de lignes et de colonnes à entrer dans le
tableau A.
k : désigne la taille du tableau V.

Le dialogue doit ressembler à ceci :


Introduire n : 3
Introduire m : 2
Saisir les éléments de A :
11 4
3 2
8 5

Le tableau V est:
11 4 3 2 8 5

Le nombre des éléments pairs dans V est: 3

16
USEK - FSGI Manuel de Laboratoire INF214

Exercice 49
Écrire un programme C++ permettant de :
- Lire une matrice de type entier A[n][n] tel que (n> 0 et n <10).
- Indiquer si les deux diagonales de la matrice A sont égales, c'est-à-dire elles contiennent
les mêmes éléments dans l’ordre de haut en bas. Afficher le message "Les deux
diagonales de A sont égales" dans le cas ou elles sont égales et le message "Les deux
diagonales de A ne sont pas égales" dans le cas contraire.

Le dialogue à l’écran doit ressembler à ceci :


Introduire la valeur de n : 3

Introduire les éléments de A :


2 3 2
0 1 5
4 2 4

Les deux diagonales de A sont égales.

Exercice 50
Écrire un programme C++ permettant de :
- Lire une matrice carrée de type entier A[n][n] (n <10 et strictement positif à
saisir).
- Lire une valeur entière « val » à partir du clavier et utiliser une valeur de type
logique (true ou false) pour indiquer si cette valeur se trouve dans la matrice A.
Afficher le message « La valeur introduite se trouve dans A » dans le cas ou la
valeur « val » est trouvée et le message « la valeur introduite ne se trouve pas
dans A » dans le cas contraire.

Le dialogue à l’écran doit ressembler à ceci :


Entrez la taille de la matrice A: 4

Entrez les éléments de A :


32 33 80 52
10 11 13 12
14 30 44 51
15 16 25 23

Entrez une valeur à chercher : 18


La valeur saisie ne se trouve pas dans A.

17
USEK - FSGI Manuel de Laboratoire INF214

Exercice 51
Écrire et tester un programme C++ qui fait tourner de 90 degrés dans le sens des aiguilles
d’une montre un tableau bidimentionnel carré d’entiers. Par exemple elle transforme le
tableau:

11 22 33
44 55 66
77 88 99

en tableau :

77 44 11
88 55 22
99 66 33

18
USEK - FSGI Manuel de Laboratoire INF214

CHAINES DE CARACTERES

Exercice 52
Écrire un programme C++ qui saisit une chaîne de caractères (max 20 caractères), et
affiche le nombre effectif de caractères.

Exemple d’exécution :
Entrez une chaîne de caractères (max = 20) : INF_214_L
Cette chaîne contient 9 caractères

Exercice 53
Écrire un programme C++ qui saisit deux chaînes de caractères (max 20 caractères
chacune), et affiche le résultat de la comparaison, par ordre alphabétique, de la deuxième
chaîne par rapport à la première.

Exemple d’exécution :
Entrez la première chaîne de caractères C1 (max = 20) : INF_214_L
Entrez la deuxième chaîne de caractères C2 (max = 20) : INF_215
Ainsi : C1 < C2

Exercice 54
Écrire un programme C++ qui saisit deux chaînes de caractères (max 20 caractères
chacune), et les compare sans distinguer entre majuscules et minuscules, puis affiche le
résultat de la comparaison de la deuxième chaîne par rapport à la première.

Exemple d’exécution :
Entrez la première chaîne de caractères C1 (max = 20) : INF_215
Entrez la deuxième chaîne de caractères C2 (max = 20) : Inf_215
Ainsi, C1 = C2

Exercice 55
Écrire un programme C++ qui saisit deux chaînes de caractères (max 20 caractères
chacune), les mets l’une à la suite de l’autre dans une même chaîne.

Exemple d’exécution :
Entrez la première chaîne de caractères (max = 20) : INF
Entrez la deuxième chaîne de caractères (max = 20) : 214
Ainsi, la chaîne totale est : INF214

19
USEK - FSGI Manuel de Laboratoire INF214

Exercice 56
Écrire un programme C++ qui saisit une chaîne de caractères (max 20 caractères), ainsi
que deux entiers D (début) et F (fin), puis crée une seconde chaîne contenant tout les
caractères d’indice compris entre D et F, puis affiche le résultat à l’écran

Exemple d’exécution :
Entrez une chaîne de caractères (max = 20) : Programmation en C++
Entrez la valeur des indices D (début) et F (fin) : 0 6
La sous-chaîne est donc : Program

Exercice 57
Écrire un programme C++ qui compte sans distinguer les majuscules et les minuscules,
les fréquences d’apparitions des voyelles (a, e, i, o, u, y) de l’alphabet dans une chaîne de
caractères (max 50 caractères) introduite au clavier, puis affiche ces fréquences.

Exemple d’exécution :
Entrez une chaîne de caractères (max = 50) :
La meilleure solution du programme

Les fréquences d'apparition des voyelles sont :


2 a, 4 e, 2 i, 3 o, 3 u, 0 y

Exercice 58
Écrire un programme C++ qui saisit une chaîne de caractères (max 20 caractères), et teste
si elle représente un palindrome (mot se lisant identiquement de gauche à droite, comme
de droite à gauche)

Exemple d’exécution :
Entrez la chaîne à tester : non
La chaîne entrée est bien un palindrome.

Exercice 59
Soit les chaînes de caractères suivantes :
S1 = "PROGRAMMER EN c++" et S2 = " ed eioj elleuQ".

Écrire un programme C++ qui affiche les chaînes S1 et S2, puis :


- Converti dans la chaîne S1 les caractères minuscules en majuscules et les
caractères majuscules en minuscules. Afficher la chaîne S1 avec des espaces entre
les caractères.
- Rempli la chaîne S2 à l’envers de telle façon que le dernier élément de S2 devient
le premier, l’avant dernier élément devient le second, etc. Afficher la chaîne S2
avec des espaces entre les caractères.

20
USEK - FSGI Manuel de Laboratoire INF214

Exemple d’exécution :
La chaîne S1 est : PROGRAMMER EN c++
La chaîne S2 est : ed eioj elleuQ

La chaîne S1 convertie est : p r o g r a m m e r e n C + +

La chaîne S2 à l'envers est : Q u e l l e j o i e d e

Exercice 60
Le but est de réaliser un programme C++ permettant de détecter si deux mots (ou deux
phrases) entré(e)s par l'utilisateur sont des anagrammes ou non.
Rappel: Deux mots sont des anagrammes si et seulement s'ils s'écrivent avec exactement
les mêmes lettres, chacune en même quantité. Exemple : ‘‘Sainte’’ et ‘‘Tisane’’ ; ‘‘Mer :
Danger !’’ et ‘‘grand-mere’’.

Remarque: Les minuscules sont considérées identiques aux majuscules, et les caractères
non alphabétiques sont ignorés.

Le dialogue doit ressembler à ceci :

Entrez la première phrase: Mer : Danger !


Entrez la seconde phrase: grand-mere
Ils sont des anagrammes.
Vous voulez continuer(O/N)? O

Entrez la première phrase: test 214


Entrez la seconde phrase: set, 312
Ils ne sont pas des anagrammes.
Vous voulez continuer(O/N)? N

21
USEK - FSGI Manuel de Laboratoire INF214

FONCTIONS

Exercice 61
Écrire un programme C++ se servant d’une fonction nommée Somme(…) permettant de
retourner la somme S de la suite suivante: S = 13-43+73-103+133 …+n3
Démarche à suivre : À l’aide d’un menu principal main(), saisir un entier n strictement
positif et inférieure ou égale à 19, appeler la fonction Somme(n), puis afficher sur écran
si la somme retournée de l’appel est positive ou négative.

Le dialogue à l’écran doit ressembler à ceci :


Introduire un entier strictement positif et <19 : 4
Somme = -63
La somme retournée de l’appel est négative.

Exercice 62
À l’aide d’un menu principal main(), écrire un programme C++ permettant :
- d’introduire un entier strictement positif n,
- d’appeler une fonction nommée IsSquare(n) permettant de tester si l’entier saisi
est un carré ou pas.
Les dix premiers carrés sont 1, 4, 9, 16, 25, 36, 49, 64, 81 et 100.
- d’afficher le résultat du test à partir du menu principal main().

Le dialogue à l’écran doit ressembler à ceci :


Introduire un entier strictement positif: 9
L’entier 9 est un carré
Tester un autre (O/N)? O

Introduire un entier strictement positif: 15


L’entier 15 n’est pas carré
Tester un autre (O/N)? N

Exercice 63
Écrire un programme C++ qui saisit un entier positif N, et calcule la
[ ]
N
somme ∑ (− 1) * (2 * i + 1) , puis affiche le résultat à l’écran. Le programme doit faire
i %2 2

i =0
appel uniquement à une fonction Somme_Diff_Impairs(...), définie comme suit :

Exemple d’exécution :
Entrez un entier positif N : 5
La somme des [(-1)^(i%2)] (2i+1)^2, tel que i = 0 à 5, est : -72

22
USEK - FSGI Manuel de Laboratoire INF214

Exercice 64
Écrire un programme C++ qui saisit deux entiers strictement positifs N et P, et calcule la
[ ]
N
somme ∑ i P , puis affiche le résultat à l’écran. Le programme doit faire appel à une
i =1
fonction Somme_N_P (...), définie comme suit :

Nom : Somme_N_P
Entrées : deux entiers N et P
Conditions initiales : N > 0 et P > 0
Sortie : un entier R
[ ]
N
Condition finale : R = ∑ i P
i =1

Exemple d’exécution :
Entrez deux entiers strictement positifs N et P : 10 1
La somme des i^1, tel que i = 1 à 10, est : 55

Exercice 65
Écrire un programme C++ qui saisit un entier N, tant que l’entier entré est non nul, et
teste si cet entier N est un carré parfait, puis affiche le résultat à l’écran. Le programme
doit faire appel à une fonction Test_Carre_Parfait (...), définie comme suit :
Nom : Test_Carre_Parfait
Entrée : un entier N
Condition initiale : -
Sortie : un "booléen" Test
Conditions finales : Si N est un carré parfait alors Test = 1, sinon Test = 0

Exemple d’exécution :
Entrez un entier N (0 pour arrêter) : 5
5 n'est pas un carré parfait

Entrez un entier N (0 pour arrêter) : 9


9 est un carré parfait

Entrez un entier N (0 pour arrêter) : 0

Exercice 66
a) Écrire un programme C++ qui saisit un entier strictement positif N, et teste si ce
nombre est dit d’Armstrong (égal à la somme des cubes de ses chiffres), puis affiche le
résultat du test à l’écran. Le programme doit faire appel à une fonction booléenne qui
possède le prototype suivant : bool Armstrong(int);

23
USEK - FSGI Manuel de Laboratoire INF214

Exemple d’exécution :
Entrer un entier strictement positif N : 153
Le nombre 153 est un nombre d’Armstrong.

b) Si on veut afficher sur écran les nombres d’Armstrong entre 1 et 500, que faut-il
changer dans le programme principal (main) de la question a.
Noter que la fonction Armstrong(…) définie dans la question a reste la même.

Exemple d’exécution :
Les nombres d’Armstrong entre 1 et 500 sont:
1 153 370 371 407

Exercice 67
Écrire un programme C++ qui saisit la dimension N d’un tableau de réels T (dimension
maximale 20 composantes), le remplit par des valeurs entrées au clavier, puis calcule et
affiche les valeurs maximale et minimale des éléments du tableau. Le programme doit
faire appel à deux fonctions MIN_TAB(...) et MAX_TAB(...).

Exemple d’exécution :
Entrez le nombre d'éléments du tableau T (max = 20) : 5

Entrez 5 valeurs réelles:


11.5 22.7 33.8 55.2 22.1

La valeur maximale de T est: 55.2


La valeur minimale de T est: 11.5

Exercice 68
Écrire un programme C++ qui saisit la dimension N d’un tableau d’entiers T (dimension
maximale 20 composantes), le remplit par des valeurs entrées au clavier, puis calcule et
affiche la différence entre la somme des carrés des nombres positifs, et celle des nombres
négatifs. Le programme doit faire appel à une fonction Diff_Sommes_Carres (...), définie
comme suit :

Nom : Diff_Sommes_Carres
Entrées : un tableau d’entiers T et un entier N
Condition initiale : N > 0
Sortie : un entier D

∑[ []T [i ] ]− ∑[ []T [i ] ]
N −1 N −1
2 2
Condition finale : D =
i =0, _ T i >0 i =0, _ T i <0

24
USEK - FSGI Manuel de Laboratoire INF214

Exemple d’exécution :
Entrez le nombre d'éléments du tableau T (max = 20) : 5

Entrez 5 entiers :
1 -3 2 -7 7

Le résultat du calcul est : -4

Exercice 69
Écrire un programme C++ qui saisit la dimension N d’un tableau d’entiers T (dimension
maximale 20 composantes), le remplit par des valeurs entrées au clavier, puis calcule et
affiche le nombre d’éléments de T multiples de 4.
Le programme doit faire appel à une fonction Multiples_4 (...), définie comme suit :

Nom : Multiples_4
Entrées : un tableau d’entiers T et un entier N
Condition initiale : N > 0
Sortie : un entier R
Condition finale : R est le nombre d’éléments de T multiples de 4

Exemple d’exécution :
Entrez le nombre d'éléments du tableau T (max = 20): 8

Entrez 8 entiers :
1 4 7 8 16 2 256 1024

Le tableau T contient 5 multiples de 4

Exercice 70
Écrire un programme C++ qui saisit la dimension N d’un tableau de réels T (dimension
maximale 20 composantes), le remplit par des valeurs entrées au clavier, puis échange les
éléments de T de façon rotatoire et affiche le résultat de la rotation, au plus 10 éléments
par ligne séparés de 2 espaces.
Le programme doit faire appel à une fonction de type void nommée Rotation_Tab (...),
définie comme suit :

Nom : Rotation_Tab
Entrées : un tableau d’entiers T et un entier N
Condition initiale : N > 0
Sorties : –
Condition finale : les éléments de T sont renversés

25
USEK - FSGI Manuel de Laboratoire INF214

Exemple d’exécution :
Entrez le nombre d'éléments du tableau T (max = 20) : 5
Entrez 5 valeurs réelles :
1.1 4.5 2.7 5.8 6.9

Le résultat de la rotation est :


6.9 5.8 2.7 4.5 1.1

Exercice 71 :
Écrire un programme C++ permettant de lire à partir de main() une matrice de type entier
A[n][n] tel que (n <5), appeler une fonction nommée Somme(…) permettant de retourner
une valeur de type logique pour indiquer si la somme des éléments de la partie
triangulaire supérieure de A est paire. Afficher dans main le message "Somme est paire"
dans le cas où la somme est paire et le message "Somme est impaire" dans le cas
contraire.

Le dialogue à l'écran doit ressembler à ceci :


Introduire la valeur de n : 3

Introduire les éléments de A:


2 3 2
0 1 5
4 2 4

Somme est paire.

Exercice 72
Un carré magique est un tableau de dimension (MxM) dont la somme des colonnes, la
somme des lignes et la somme des deux diagonales est la même. À titre d'exemple, le
carré suivant est magique :

8 1 6
3 5 7
4 9 2

car pour toutes les directions indiquées par les flèches, la somme des nombres (somme
magique) est toujours égale à 15 (8+1+6, 8+3+4, 4+5+6, 8+5+2, etc.).

À partir du menu principal main(), saisir un tableau de dimension (MxM) et appeler une
fonction nommée magique (…) permettant de retourner un booléen avec la valeur true si
le carré est magique, false sinon.

26
USEK - FSGI Manuel de Laboratoire INF214

Exercice 73
On désire analyser une ligne de texte, en examinant chaque caractère et en déterminant à
quelle catégorie il appartient. À partir du menu principal main() lire une ligne de texte,
afficher la longueur de la chaîne saisie et appeler la fonction Analyse_Chaine(…) qui
permet de rendre à partir de ses paramètres de référence le nombre des caractères
alphabétiques, caractères minuscules, caractères majuscules, des chiffres, des caractères
alphabétiques ou numériques, des espaces et des chiffres hexadécimaux.

La fonction à écrire possède le prototype suivant :


void Analyse_Chaine (char[], int&, int&, int&, int&, int&, int&, int&);

Le dialogue à l’écran doit ressembler à ceci:


Introduire le texte: Bienvenue A l’USEK1
La longueur de la chaîne est: 19

Le nombre des caractères alphabétiques est: 15


Le nombre des caractères majuscules est: 6
Le nombre des caractères minuscules est: 9
Le nombre des chiffres est: 1
Le nombre des caractères alphabétiques ou numériques est: 16
Le nombre des espaces: 3
Le nombre des chiffres hexadécimaux est: 3

27
USEK - FSGI Manuel de Laboratoire INF214

FICHIERS TEXTE

Exercice 74
À l’aide d’un menu principal main(), écrire un programme C++ permettant :
- de déclarer un tableau d’entiers Tab de taille n strictement positive et impaire,
- de saisir les éléments du tableau Tab,
- de stocker dans un fichier texte (Impairs.txt) les éléments impairs du tableau Tab
et les éléments pairs du tableau Tab dans un fichier texte (Pairs.txt),
- d’accéder en lecture aux fichiers créés afin d’afficher sur écran leurs éléments.

Le dialogue doit ressembler à ceci :


Introduire la taille du tableau: 8

Saisir les éléments du tableau:


5 2 7 9 12 1 22 4

Le fichier "Impairs.txt" contient:


5 7 9 1

Le fichier "Pairs.txt" contient:


2 12 22 4

Exercice 75
À l’aide d’un menu principal main(), écrire un programme C++ permettant :
- de saisir une matrice carrée A[n][n] de type entier (c’est à l’utilisateur d’introduire
la valeur de n entre 3 et 10),
- de stocker dans un fichier texte (Diag1.txt) les éléments de la première diagonale
de A et dans un fichier texte (Diag2.txt) les éléments de la seconde diagonale.
- d’accéder en lecture aux fichiers créés afin de comparer si le premier fichier
contient les mêmes éléments du second fichier.

Le dialogue doit ressembler à ceci :


Introduire n: 5

Saisir les éléments de la matrice A:


5 2 7 9 5
14 33 67 33 13
45 2 7 9 12
88 24 66 24 11
66 11 17 9 66

Le premier fichier contient les mêmes éléments du second fichier.

28
USEK - FSGI Manuel de Laboratoire INF214

Exercice 76
Soit le fichier C++ suivant :

Test.cpp
#include <iostream.h>
int main() {
int n = 4537, x = 0;
while (n>0){
x+ = n%10; n/ =10;
}
cout<< "Résultat ="<<x;
return 0;
}

- Écrire un programme C++ permettant :


- D’ajouter des numéros de lignes au fichier (Test.cpp) dans un autre fichier de sortie
(Test1.cpp) comme suivant :
Test1.cpp
1: #include <iostream.h>
2: int main() {
3: int n = 4537, x = 0;
4: while (n>0){
5: x+ = n%10; n/ = 10;
6: }
7: cout<< "Résultat ="<<x;
8: return 0;
9: }

- De transférer le fichier numéroté (Test1.cpp) à un autre fichier (Test2.cpp).

Exercice 77
Soit le fichier texte (Fichier1.txt) qui contient les informations suivantes:
Fichier1.txt
Le C est un langage de programmation parmi les plus populaires. Il n’y a pas de langage
plus versatile que le C . De plus, le C est un langage amusant au niveau de l’utilisation.

- Écrire un programme en C++ qui permet de chercher le " C " dans (Fichier1.txt) et le
remplacer par " C++ "dans (Fichier2.txt).

-------------------------------------------------------------------------------------------Bon Travail !

29

Vous aimerez peut-être aussi