TP1 : C++
Programme :
Compilation :
Exercice 2 :
L'indice de masse corporelle (IMC) est calculé à partir des valeurs de
poids et de taille. Il permet d'évaluer la relation entre le poids et la
santé en déterminant la corpulence de la personne (voir s'il y a obésité
ou maigreur…). Il se calcule avec la formule suivante : poids (kg)/[taille
(m) * taille (m)] Ecrire un programme qui saisit le poids, la taille, le sexe,
et qui calcule l’IMC. En utilisant le tableau suivant, indiquer l’état de
poids (maigreur, poids normal, …).
Programme :
Compilation :
Exercice 3:
Ecrire un programme qui permet de faire des opérations sur un entier
(valeur initiale à 0). Le programme affiche la valeur de l'entier puis
affiche le menu suivant : 1. Ajouter 1 2. Multiplier par 2 3. Soustraire 3
4. Quitter Le programme demande alors de taper un entier entre 1 et 4.
Si l'utilisateur tape une valeur entre 1 et 3, on effectue l'opération, on
affiche la nouvelle valeur de l'entier puis on réaffiche le menu et ainsi
de suite jusqu'à ce qu'on tape 4. Lorsqu'on tape 4, le programme se
termine.
Programme :
Compilation :
Exercice 4:
Ecrire un programme qui demande à l'utilisateur de taper des entiers strictement
positifs et qui affiche leur moyenne. Lorsqu'on tape une valeur négative, le
programme affiche ERREUR et demande de retaper une valeur. Lorsqu'on tape 0,
cela signifie que le dernier entier a été tapé. On affiche alors la moyenne. Si le
nombre d'entiers tapés est égal à 0, on n’affiche PAS DE MOYENNE
Programme :
Compilation :
Exercice 5:
Ecrire une fonction f ayant comme paramètre un entier et qui renvoie
un booléen : true si l'entier est premier false sinon. Tester cette
fonction.
Programme :
Compilation:
Si le nombre est premier il return 1
Exercice 6:
Soit le modèle de structure suivant : struct T { int n ; float x ; } ; Écrire
une fonction nommée zero permettant de remettre à zéro les 2 champs
de la structure, utiliser les deux ca suivant :
a) Passage par adresse ;
b) Passage par référence.
Programme :
Compilation :
Exercice 7 :
Soient les déclarations (C++) suivantes :
int fct (int) ; // fonction I
int fct (float) ; // fonction II
void fct (int, float) ; // fonction III
void fct (float, int) ; // fonction IV
int n, p ;
float x, y ;
char c ;
double z ;
Les appels suivants sont-ils corrects et, si oui, quelles seront les
fonctions effectivement appelées et les conversions éventuellement
mises en place ?
a. fct (n) ; b. fct (x) ; c. fct (n, x) ; d. fct (x, n) ; e. fct (c) ; f. fct (n, p) ; g.
fct (n, c) ; h. fct (n, z) ;i. fct (z, z) ;
SOLUTION :
Les cas a, b, c et d ne posent aucun problème. Il y a respectivement
appel des fonctions I, II, III et IV, sans qu’aucune conversion
d’argument ne soit nécessaire.
e. Appel de la fonction I, après conversion de la valeur de c en int.
f. Appel incorrect, compte tenu de son ambiguïté ; deux possibilités
existent en effet : conserver n, convertir p en float et appeler la
fonction III ou, au contraire, convertir n en float, conserver p et appeler
la fonction IV.
g. Appel de la fonction III, après conversion de c en float.
h. Appel de la fonction III, après conversion (dégradante) de z en float.
i. Appel incorrect, compte tenu de son ambiguïté ; deux possibilités
existent en effet : convertir le premier argument en float et le second
en int et appeler la fonction III ou, au contraire, convertir le premier
argument en int et le second en float et appeler la fonction IV
Exercice 8:
Ecrivez une classe Vecteur comportant :
– Comme membres données privés : trois composantes de type double:
x, y et z
– Comme fonctions membres publiques :
• Initialise pour attribuer des valeurs aux composantes,
• Produit pour multiplier les composantes par une valeur fournie en
argument
• Affiche pour afficher les composantes du vecteur.
• Ecrivez une classe Vecteur analogue à la précédente, dans laquelle
la fonction initialise est remplacée par un constructeur.
• Ajouter 2 autres constructeurs et un destructeur
• Tester cette classe en créant 3 objets (a, b et c) et en appelant les
deux méthodes : produit et affiche.
Programme :
La class vecteur :
Class vect analogue :
La fonction main :
Compilation :
Les fichiers:
Exercice 1 :
ex 1.cpp
Exercice 2
exercice 2.cpp
Exercice 3 :
exercice 3.cpp
Exercice 4 :
exo 4 TP 1.cpp
Exercice 5
exercice 5.cpp
Exercice 6 ;
exercice 6.cpp
Exercice 8
exx8.cpp