Correction 2
Premiers pas en programmation
Par ailleurs, les solutions proposées correspondent à l'état de vos connaissances au moment où la série est abordée. D'autres solutions pourront être envisagées une fois de nouveaux concepts acquis.
| Exercice 1 | Exercice 2 | Exercice 3 | Exercice 4 |
Exercice 1 : Variables (niveau 1)
Voici une solution :
#include <iostream>
using namespace std;
int main()
{
constexpr int ANNEE_COURANTE(2025);
cout << "Entrez votre âge :" << endl; // Affichage de la question
int age(0); // Déclaration de variable pour stocker l'âge
cin >> age; // Lecture de la réponse
// Déclaration et initialisation de la variable pour stocker l'année de naissance
int annee(ANNEE_COURANTE - age);
// Affichage de l'année de naissance (stockée en mémoire)
cout << "Vous êtes né(e) vers l'année " << annee
<< endl;
return 0;
}
Il y a cependant de multiples manières de manipuler ces variables. Elles peuvent par exemple être déclarées plus tôt (mais je vous conseille plutôt de toujours déclarer vos variables au plus près de leur utilisation et aussi de toujours les initialiser, ce qui n'est pas le cas ci-dessous) :
/* Solution possible mais déconseillée */
#include <iostream>
using namespace std;
int main()
{
// Déclarations
constexpr int ANNEE_COURANTE(2025);
int age; // n'applique pas le principe: «déclarer au plus près de l'utilisation»
int annee;
cout << "Entrez votre âge :" << endl; // Affichage de la question
cin >> age; // Lecture de la réponse
annee = ANNEE_COURANTE - age; // Calcul
// Affichage de l'année
cout << "Vous êtes né(e) vers l'année " << annee << endl;
return 0;
}
Si ce n'était pas imposé par la donnée, on pourrait aussi ne pas utiliser de variable intermédiaire et effectuer le calcul directement au moment de l'affichage :
#include <iostream>
using namespace std;
int main()
{
constexpr int ANNEE_COURANTE(2025);
cout << "Entrez votre âge :" << endl; // Affichage de la question
int age(0) // Déclaration
cin >> age; // Lecture de la réponse
// Affichage de l'année
cout << "Vous êtes né(e) vers l'année " << ANNEE_COURANTE - age << endl;
return 0;
}
Exercice2 : fondue (niveau 1)
Le programme demandé :
#include <iostream>
using namespace std;
int main()
{
constexpr int BASE(4); // nombre de personnes pour la recette de base
// Pour faire une fondue fribourgeoise pour 4 personnes il faut :
double fromage(800.0); // 800gr de Vacherin fribourgeois
double eau(2.0); // 2dl d'eau
double ail(2.0); // 2 gousses d'ail
double pain(400.0); // 400 gr de pain
/* On supposera pour cet exercice que l'utilisateur ne saisit que
* des valeurs strictement positives mais nous pourrons faire mieux
* dès la semaine prochaine
*/
cout << "Entrez le nombre de personne(s) conviée(s) à la fondue : ";
int nb_convives;
cin >> nb_convives;
// Mise à jour des quantités en fonction du nombre de convives :
double ratio = nb_convives; // Notez le 'double' ici...
ratio /= BASE; // ... pour éviter une division entière.
fromage *= ratio;
eau *= ratio;
ail *= ratio;
pain *= ratio;
cout << "Pour faire une fondue fribourgeoise pour " << nb_convives << " personne(s), " << endl;
cout << ("il vous faut : ") << endl;
cout << " - " << fromage << " gr de Vacherin fribourgeois" << endl;
cout << " - " << eau << " dl d'eau" << endl;
cout << " - " << ail << " gousse(s) d'ail" << endl;
cout << " - " << pain << " gr de pain" << endl;
cout << " - du poivre à volonté" << endl;
return 0;
}
Exercice3
Le programme demandé :
#include <iostream>
using namespace std;
int main()
{
int x, y; // Déclarations
double a, b, c, d;
x=2; y=4; // Affectations
a=x+y; b=x-y; c=x*y; d=x/y; // Opérations
// Affichage des résultats
cout << x << "+" << y << "=" << a << " ; "
<< x << "-" << y << "=" << b << endl
<< x << "*" << y << "=" << c << " ; "
<< x << "/" << y << "=" << d << endl
;
return 0;
}
Puis même chose en remplaçant «int x, y;»
par «double x, y;», puis par
«int x; double y;».
Explications :
Lorsque les deux opérandes (x et y) sont de type
entier, l'expression x/y la division qui
s'effectue est la division entière (ou division
«euclidienne») !
C'est-à-dire que le résultat est le quotient.
Dans le cas précis (x=2 et y=4), on obtient bien
0 :
x = 0 * y + 2
Par contre, dès qu'une opérande est de
type double, c'est une division réelle qui est
effectuée. C'est-à-dire que le résultat est la valeur (approchée à la
précision des double) du nombre réel correspondant.
Exercice 4
Voici une solution possible :
#include <iostream>
using namespace std;
int main()
{
// Entrée de données
cout << "Combien avez-vous reçu d'argent (Frs):) ";
int budget;
cin >> budget;
// Calcul du budget livres & fournitures
int budget_livres(budget * 3 / 4);
int reste_budget(budget - budget_livres);
// Calcul du budget pour les trois autres rubriques
int autre(reste_budget / 3);
// Calcul du nombre de cafés
int nb_cafes(autre / 2);
// Calcul du nombre de numéros du Flash
int nb_flash(autre / 4);
// Calcul du nombre de billets de métro
int nb_billets(autre / 3);
// Calcul de l'argent restant
int reste(autre % 2 + autre % 4 + autre % 3 + reste_budget % 3);
// Affichage des résultats
cout << "Livres et Fournitures: " << budget_livres << " Frs" << endl;
cout << "Vous pouvez ensuite acheter :" << endl;
cout << " " << nb_cafes << " cafés à Sat" << endl;
cout << " " << nb_flash << " numéros du Flash" << endl;
cout << " " << nb_billets << " billets de métro" << endl;
cout << "et il vous restera " << reste
<< " Frs pour les roses blanches." << endl;
return 0;
}
Dernière mise à jour : $Date: 2025/09/12 17:11