Algorithmique/Prog.
C++ L1 Info/Math - Semestre 2 TP1 Notions de base
Consignes valables pour tous les TPs
Les consignes suivantes sont à suivre pour tous les TPs informatiques : info4, info5, info7.
Organisation des fichiers
Créer un répertoire du nom du module, puis un répertoire par TP. Vous pourrez ainsi y recopier le sujet si vous le
souhaitez, télécharger les fichiers utiles pour le TP en cours ...
Editeur recommandé
L’éditeur recommandé est VS Code, que vous avez dû utiliser dans le module "Info1" du 1er semestre. Pour utiliser
l’environnement Visual Studio Code :
1. Lancer VS Code
2. Ouvrir le répertoire (= "Folder") de travail
3. Ouvrir un fichier (= "File") [Link] et écrivez le code dedans
4. Exécution - Plusieurs possibilités :
— lancer l’exécution en cliquant sur "Run Without Debugging", le résultat s’affiche dans le terminal
— dans un terminal, lancer la ligne de commande :
g++ -W -Wall [Link]
Attention au répertoire dans lequel vous lancez la commande !
Rappels : passage de paramètres
Comme en Python, le passage des paramètres d’"entrée" se fait "par valeur".
Et comme les listes en Python, les tableaux modifiés par une instruction dans la fonction seront également modifiés en
"dehors" de la fonction. Nous verrons l’explication de ceci dans la suite du cours lorsque nous aborderons les pointeurs et
les adresses.
Exercice 1 : quelques fonctions simples
Dans cet exercice vous allez écrire quelques fonctions simples pour vous familiariser avec le langage C++. Donc chaque
fois que vous écrirez une fonction, vous l’appellerez dans le programme principal (fonction "main()") pour vérifier qu’elle
s’exécute correctement. Vous demanderez à l’utilisateur de saisir les valeurs des paramètres d’entrée de vos fonctions si
nécessaire.
Vous allez donc écrire le "canevas" de base d’un programme C++ (pour plus d’explications voir le cours) :
// description du problème
// auteur, date
// inclure la classe d'entrées/sorties
#include <iostream>
// définir std comme namespace de base
using namespace std;
// déclarer vos fonctions
// Programme principal
int main()
{
// INSERER VOTRE ALGORITHME ICI
// fin du programme
return 0;
} // main
TP1_Bases.tex 1/ 4 15 décembre 2023
Algorithmique/Prog.C++ L1 Info/Math - Semestre 2 TP1 Notions de base
puis en vous aidant du cours vous implémenterez les fonctions demandées ci-dessous.
— Écrire une fonction additionner à 2 paramètres entiers a et a et qui retourne la somme de ces 2 entiers.
— Écrire une fonction initTab à 1 paramètre un tableau T de 50 entiers, qui initialise le tableau avec 50 éléments
aléatoirement.
Pour cela vous allez rajouter la bibliothèque : #include < random >. Il faudra ensuite écrire dans votre code :
#include <random>
void initTab(...){
std::random_device dev;
std::mt19937 rng(dev());
std::uniform_int_distribution<> dist(a,b);
int val;
val = dist(rng); //génère un nombre aléatoire entre a et b,
//peut être répété plusieurs fois
Ceci vous permettra d’avoir des entiers aléatoires entre a et b.
Contrairement aux listes en Python qu’on initialisait à vide au départ et auxquelles on rajoutait les éléments 1 par
1, en C++ on va définir les tableaux (équivalents des listes) par leurs nombres d”éléments, puis les remplir. (On
définit la structure complète au départ. 1 )
— Écrire une fonction printTab à 2 paramètres un tableau T de 50 entiers, et un entier nbCol qui affiche les éléments
du tableau T nbCol éléments par ligne.
— Écrire une fonction addElementTab à 1 paramètre un tableau de 50 entiers, qui initialise le tableau avec 50 éléments
aléatoirement (utiliser la fonction "initTab") et qui retourne la somme des éléments du tableau en utilisant la fonction
"additionner".
— Écrire un programme principal qui remplit un tableau de 50 entiers, qui l’affiche, et qui renvoie la somme de ses
éléments.
Exercice 2 - Distance d’arrêt d’un véhicule
Il va s’agir ici d’estimer la distance d’arrêt d’un véhicule lors du freinage.
Attention : les données utilisées sont des valeurs généralement admises mais ne remplacent pas une étude précise des
informations relatives à la conduite.
1. Nos calculs seront généralement effectués en nombres réels mais arrondis ensuite à l’entier supérieur. Écrire la
fonction arrondiSup
— elle attend 1 paramètre : le réel n
— elle renvoie l’arrondi supérieur de n
— exemples : arrondiSup(1.0) renvoie 1, arrondiSup(1.2) renvoie 2, arrondiSup(1.9) renvoie 2, arrondiSup(2.0)
renvoie 2
2. Écrire la fonction tempsDeReaction
— elle attend 2 paramètres : les booléens fatigue et alcool
— elle renvoie le calcul du temps de réaction d’un conducteur avant freinage(entier) :
— une seconde au moins
— auquel s’ajoute 1 seconde si le conducteur est fatigué
— auquel s’ajoute 1 seconde puis doublement du temps si le conducteur a consommé de l’alcool (ces valeurs
peuvent être beaucoup plus importantes dans la réalité !)
— exemples : tempsDeReaction(false, false) renvoie 1, tempsDeReaction(true, false) renvoie 2, tempsDeReac-
tion(false, true) renvoie 4, tempsDeReaction(true, true) renvoie 6
3. Écrire la fonction kmh2ms
— elle attend 1 paramètre : le réel vitesseKmh
— elle renvoie le résultat de la conversion de la vitesse de km/h en mètres par seconde (m/s) arrondi à l’entier
supérieur ; la fonction arrondiSup sera utilisée.
4. Écrire la fonction distanceReaction
1. à ce stade du cours.
TP1_Bases.tex 2/ 4 15 décembre 2023
Algorithmique/Prog.C++ L1 Info/Math - Semestre 2 TP1 Notions de base
— elle attend 3 paramètres : un réel vitesseKmh, les booléens fatigue et alcool
— elle renvoie la distance parcourue pendant le temps de réaction arrondie à l’entier supérieur ; les fonctions
kmh2ms et tempsDeReaction seront utilisées.
5. Écrire la fonction distanceFreinage
— elle attend 1 paramètre : le réel vitesseKmh
— elle retourne la distance en mètres parcourue pendant le temps de freinage : d = (v/10)2 ; la fonction arrondiSup
sera utilisée. Exemple à 50kmh la distance est de 5*5=25m.
6. Écrire la fonction distanceTotaleSec (calcul de la distance d’arrêt par temps sec)
— elle attend 3 paramètres : un réel vitesseKmh, les booléens fatigue et alcool,
— elle retourne la distance d’arrêt (réaction + freinage) par temps sec. Les fonctions précédentes seront utilisées.
7. Écrire la fonction distanceTotaleHum (calcul de la distance d’arrêt par temps humide)
— elle attend 3 paramètres : un réel vitesseKmh, les booléens fatigue et alcool
— elle retourne la distance d’arrêt par temps humide (réaction + 2*freinage) par temps sec.
8. Écrire la fonction distanceEtage
— elle attend 1 paramètre entier distance
— elle retourne la valeur représentant la distance en nombre d’étages sachant que la hauteur d’un étage est d’environ
2.5m ; la fonction arrondiSup sera utilisée.
9. Écrire un programme qui
— déclare les variables nécessaires
— affiche les 2 lignes d’entêtes du tableau (une seule instruction d’affichage)
— dans une boucle contrôlée par une variable, affiche les données d’une ligne du tableau ; nous effectuerons une
simulation de 20km/h à 130km/h par pas de 10km/h ; les fonctions distanceReaction, distanceFreinage,
distanceTotaleSec, distanceTotaleHumide et distanceEtage seront utilisées.
— affiche les informations du bas de tableau en utilisant une seule instruction d’affichage.
Exemple d’exécution :
TP1_Bases.tex 3/ 4 15 décembre 2023
Algorithmique/Prog.C++ L1 Info/Math - Semestre 2 TP1 Notions de base
Exercice 3 - Tableau de ventes
On va considérer un tableau à deux dimensions qui regroupe les informations relatives aux ventes de voitures dans
une concession. Une première dimension sert à représenter les différents modèles de voitures (une colonne pour chaque
modèle). Une deuxième dimension sert à représenter les ventes d’un vendeur de l’entreprise (une ligne par vendeur). Une
case contient le nombre de voitures d’un modèle donné vendu par un vendeur X, soit un entier.
Exemple de tableau des ventes :
Twingo (0) Clio (1) Mégane (2) Vel satis (3)
André (0) 0 3 2 0
Ingemar (1) 2 3 0 1
Jérôme (2) 1 1 1 1
Cindy (3) 5 1 0 0
Joey (4) 1 1 2 0
On supposera qu’il y a 4 modèles et 5 vendeurs.
Vous définirez des constantes pour rendre le code plus lisible telles que :
const int NB_VENDEURS = 5;
const int NB_MODELES = 4;
Vous définirez également le tableau des prix de chaque modèle :
int prix[NB_MODELES] = {1000, 2000, 3000, 4000};
1. Écrire une fonction saisirTableauVentes à 1 paramètre le tableau des ventes défini ci-dessus qui le remplit en
suivant l’exemple d’exécution ci-dessous (l’espace est un délimiteur d’entiers) :
Entrer les ventes du vendeur no 1 dans l'ordre des modèles : 0 3 2 0
Entrer les ventes du vendeur no 2 dans l'ordre des modèles : 2 3 0 1
Entrer les ventes du vendeur no 3 dans l'ordre des modèles : 1 1 1 1
Entrer les ventes du vendeur no 4 dans l'ordre des modèles : 5 1 0 0
Entrer les ventes du vendeur no 5 dans l'ordre des modèles : 1 1 2 0
2. Écrire une fonction calculerNbModeleVendu à 2 paramètres le tableau des ventes et le numéro du modèle "num-
Modele", qui calcule et retourne le nombre d’exemplaires vendus pour ce modèle ;
3. Écrire une fonction afficherNbModelesVendus à 1 paramètre le tableau des ventes, qui affiche pour chaque modèle
du tableau le nombre d’exemplaires vendus en respectant l’affichage suivant :
Modele no 1 : 9
Modele no 2 : 9
Modele no 3 : 5
Modele no 4 : 2
4. Écrire une fonction calculerNbModelesVendusParVendeur à 2 paramètres le tableau des ventes et le numéro du
vendeur "numVendeur", qui calcule et retourne le nombre de voitures vendues par ce vendeur ;
5. Écrire une fonction calculerCAParVendeur à 3 paramètres le tableau des ventes, le tableau des prix de chaque
modèle et le numéro du vendeur "numVendeur", et qui retourne le chiffre d’affaire généré par ce vendeur ;
6. Écrire une fonction afficherCAVendeurs à 2 paramètres le tableau des ventes et le tableau des prix de chaque
modèle, qui affiche le nombre de voitures vendues et le chiffre d’affaires généré par chacun des vendeurs, en
respectant l’affichage suivant :
Le vendeur 1 a vendu 5 voitures pour un CA de : 12000 euros
Le vendeur 2 a vendu 6 voitures pour un CA de : 12000 euros
Le vendeur 3 a vendu 4 voitures pour un CA de : 10000 euros
Le vendeur 4 a vendu 6 voitures pour un CA de : 7000 euros
Le vendeur 5 a vendu 4 voitures pour un CA de : 9000 euros
7. Écrire un programme qui permet de remplir le tableau des ventes avec les informations de l’introduction, puis affiche
le nombre de modèles vendus, puis le nombre de voitures vendues par chaque vendeur ainsi que leur chiffre d’affaires
généré par ces ventes.
TP1_Bases.tex 4/ 4 15 décembre 2023