Vous êtes sur la page 1sur 5

ECOLE PREPARATOIRE DES SCIENCES ET TECHNIQUES – ANNABA

Année Universitaire 2011-2012

Informatique 2eme année

Solutions Travaux Dirigés No 2

1. Écrire une simple instruction en C++ qui affiche « nombre assez grand » si la variable count est plus
grande que 100.

if (count > 100) cout << " nombre assez grand ";

2. Qu’est-ce-qui est erroné (faux) dans le code suivant :


a. cin << count;
b. if x < y min = x
else min = y;

a. Ou le cout devrait être employé au lieu du cin, ou l'opérateur d'extraction >> devrait être
employé au lieu de l'opérateur d'insertion <<.
b. Des parenthèses sont exigées autour de la condition x < y, et un point-virgule est exigé à la fin
de la clause if avant le else.

3. Qu’est-ce-qui est erroné (faux) dans le code suivant ?


cout << "Enter n: ";
cin >> n;
if (n < 0)
cout << "That is negative. Try again." << endl;
cin >> n;
else
cout << "o.k. n = " << n << endl;

Il y a plus qu’une instruction entre la clause if et la clause else. Elles doivent être transformées en
instruction composée en les enfermant dans les parentheses {}.

4. Construire une expression logique pour représenter chacune des conditions suivantes :
a. score (variable) est plus petit ou egal a 80 mais plus petit que 90.
b. answer (variable) est ‘N’ ou ‘n’;
c. n est pair mais différent de 8
d. ch est une lettre majuscule

a. (score >= 80 && score < 90)


b. (answer == 'N' || answer == 'n')
c. (n%2 == 0 && n != 8)
d. (ch >= 'A' && ch <= 'Z')
5. Construire une expression logique pour représenter chacune des conditions suivantes:
a. n est entre 0 et 7 mais différent de 3
b. n est entre 0 et 7 mais n’est pas un nombre pair
c. ch est une lettre majuscule ou minuscule

a. (n > 0 && n < 7 && n != 3)


b. (n > 0 && n < 7 && n%2 != 0)
c. ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'))

6. Quelle est la différence entre les deux instructions suivantes:


if (n > 2) { if (n < 6) cout << "OK"; } else cout << "NG";
if (n > 2) { if (n < 6) cout << "OK"; else cout << "NG"; }

Dans la première instruction, le else correspond au premier if. Dans la seconde instruction, le else
correspond au second if. Si n <= 2, la première instruction imprimera le NG tandis que la seconde
instruction ne fera rien. Si 2 < n < 6, les deux instructions imprimeront OK. Si le n< 6, la première
instruction ne fera rien tandis que la seconde instruction imprimera le NG.

7. Écrire un programme qui lit l'âge de l'utilisateur et imprime « vous êtes un enfant. » si l'âge < 18, « vous
êtes un adulte. » si l'âge du >= 18 et âge < 65, ou « vous êtes un vieillard. » si l’âge 65.

int main()
{ int age;
cout << "Enter your age: ";
cin >> age;
if (age < 18) cout << "You are a child.\n";
else if (age < 65) cout << "You are an adult.\n";
else cout << "you are a senior citizen.\n";
}

8. Identifier et corriger les erreurs dans chacun des cas suivants:

a. while ( c <= 5 )
{
product *= c;
c++;

b. cin << value;


c. if ( gender == 1 )
cout << "Woman" << endl;
else;
cout << "Man" << endl;

a. Erreur : Manque la parenthèse fermante de la boucle while.


Correction : Ajouter la parenthèse fermante après l’instruction c++ ;.
b. Erreur : Insertion de stream utilisée au lieu d'extraction stream.
Correction : Changer << en >>.
c. Erreur : Point-virgule après else donne une erreur de logique.
Correction : Enlever le point-virgule après else.
9. Qu’est-ce-qui est erroné (faux) dans le code suivant?

while ( z >= 0 )
sum += z;

La valeur de la variable z n'est jamais changée dans la boucle while. Par conséquent, si la condition (z
>= 0) est au début vrai, une boucle infinie est créée. Pour remédier à ça, z doit être décrémenté de
sorte qu'il devienne par la suite plus petit que 0.

10. Qu’affiche le programme suivant :

#include<iostream.h>
int main() {
int i = 0 ;
if (i=0) {
cout << “vrai”;
else
cout << “faux”;
}

Le programme affiche faux car l’expression (i=0) est une affectation qui renvoie sa partie droite (dans
ce cas 0). Le zéro est considéré comme le Faux logique.

11. Soit le programme en C++ suivant :

#include <iostream.h>
int main() {
int n ;
cin >> n ;
switch (n) {
case 0 : cout << "Nul " ;
case 1 :
case 2 : cout << "Petit " ; break ;
case 3 :
case 4 :
case 5 : cout << "Moyen " ;
default : cout << "Grand " ;
}
}

Qu’affiche ce programme lorsqu’on lui fournit chacune des valeurs suivantes :


a) 0
b) 1
c) 4
d) 10
e) -5

a) Nul Petit
b) Petit
c) Moyen Grand
d) Grand
e) Grand
12. En utilisant un switch, écrire un programme qui lit un entier qui représente un mois (1 pour janvier, 2
pour février, 3 pour mars, etc.) et qui affiche le nombre de jours de ce mois.

#include<iostream.h>
int main() {
int n;
cin >> n;
switch (n) {
case 2 : cout << “nombre de jours = 28”;break;
case 1 :
case 3 :
case 5 :
case 7 :
case 8 :
case 10 :
case 12 : cout << “nombre de jours = 31”;break;
case 4 :
case 6 :
case 9 :
case 11 : cout << “nombre de jours = 30”;break;
default : cout << “mois erroné”;
}
}

13. Améliorer la lisibilité de ce programme en remplaçant le switch-case par if-else

#include<iostream.h>
int main() {
int n;
cin >> n;
switch (n) {
case 0 : cout << “ajournée”;break;
case 1 : cout << “ajournée”;break;
case 3 : cout << “ajournée”;break;
case 4 : cout << “ajournée”;break;
case 5 : cout << “ajournée”;break;
case 6 : cout << “ajournée”;break;
case 7 : cout << “ajournée”;break;
case 8 : cout << “ajournée”;break;
case 9 : cout << “ajournée”;break;
case 10 : cout << “passable”;break;
case 11 : cout << “passable”;break;
case 12 : cout << “assez bien”;break;
case 13 : cout << “assez bien”;break;
case 14 : cout << “bien”;break;
case 15 : cout << “bien”;break;
case 16 : cout << “très bien”;break;
case 17 : cout << “très bien”;break;
case 18 : cout << “très bien”;break;
case 19 : cout << “excellent”;break;
case 20 : cout << “excellent”;break;
default : cout << “note invalide”;
}
}
#include<iostream.h>
int main() {
int n;
cin >> n;
if ((n<0) || (n>20)) {
cout << “note invalide”;
} else if (n<10) {
cout << “ajournée”;
} else if (n<12) {
Cout << “passable”;
} else if (n<14) {
Cout << “assez bien”;
} else if (n<16) {
Cout << “bien”;
} else {
Cout << “excellent”;
}
}

Vous aimerez peut-être aussi