Ne parvient pas à corriger ses erreurs en c++
SahDa
Messages postés
5
Statut
Membre
-
SahDa -
SahDa -
Bonjour, je débute en c++ et j'ai des difficultés à comprendre et corriger mes erreurs. Merci à tous pour votre aide.
Voici mon code :
Voici mon code :
#include <stdexcept>
/** @file **/
#include <fstream>
#include <iostream>
#include <vector>
#include <string>
using namespace std;
/** Construction d'un tableau d'entiers lu depuis un fichier
* On suppose que le fichier contient sur chaque ligne un numéro de mois
* suivi d'une donnée correspondant au mois.
* @param nom_fichier, le nom du fichier de données
* @return un tableau d'entiers de taille 12 tel que dans chaque
* case d'indice i, on trouve la donnée du mois i
**/
vector<int> litTableauMois("donnees/volumes_d_eau_distribues.txt") {
ifstream fichierMois("donnes/volumes_d_eau_distribues.txt") ;
int volumeDeau ;
int moisDeau ;
vector <int> volumeDeauTab ;
vector <int> moisDeauTab ;
while (fichierMois >> moisDeau and fichierMois >> volumeDeau) {
volumeDeauTab.push_back(volumeDeau) ;
moisDeauTab.push_back(moisDeau) ;
}
vector <int> t ;
t = vector <int> (12) ;
for (int i = 0 ; i < t.size() ; i++) {
t[moisDeauTab[i]-1] = volumeDeauTab[i] ;
}
return t ;
}
/** test de la fonction litTableauMois **/
void testLitTableauMois () {
ASSERT(t[0] == 16231200); // Le volume pour janvier
ASSERT(t[11] == 15530100); // Le volume pour décembre
ASSERT(t[4] == 17711200); //Le volume pour mai
}
/** Renvoie la somme d'un tableau d'entiers
* @param t, un tableau d'entier
* @return la somme des valeurs
**/
int somme(vector<int> t) {
int sommeTab = 0 ;
for (int i = 0 ; i < t.size () ; i ++) {
sommeTab = sommeTab + t[i] ;
}
return sommeTab ;
}
/** Test de la fonction somme **/
void testSomme() {
ASSERT(somme({1,2,3}) == 6);
ASSERT(somme({}) == 0);
ASSERT(somme({2,2,4,8}) == 16);
}
/** Renvoie la moyenne d'un tableau d'entier
* @param t, un tableau d'entiers
* @return la moyenne (entière) des valeurs
**/
int moyenne(vector<int> t) {
int moyenneTab = somme (t)/t.size() ;
return moyenneTab ;
}
/** Test de la fonction moyenne **/
void testMoyenne() {
ASSERT(moyenne({1,2,3}) == 2);
ASSERT(moyenne({1}) == 1);
ASSERT(moyenne({2,2,4,8}) == 4);
}
/** Renvoie l'indice de la valeur maximale du tableau
* @param t, un tableau d'entier
* @return l'indice de la valeur maximale ou -1 si le tableau est vide
**/
int indiceMax(vector<int> t) {
if (t.size() <= 0 {
return -1 ;
}
int m = 0 ;
int indiceM = 0 ;
for (int i = 0 ; i < t.size() ; i++) {
if (t[i] > m) ;
m = t[i] ;
indiceM = i ;
return indiceM ;
}
/** Test de la fonction IndiceMax **/
void testIndiceMax() {
ASSERT(indiceMax({}) == -1);
ASSERT(indiceMax({1,2,3}) == 2);
ASSERT(indiceMax({1,3,2}) == 1);
ASSERT(indiceMax({1}) == 0);
ASSERT(indiceMax({2,8,4,4}) == 1);
}
/** Lance les fonctions de test puis affiche :
* - le volume d'eau total sur l'année
* - la moyenne par mois
* - le mois avec le plus gros volume d'eau et son volume
**/
int main() {
vector <int> t = litTableauMois("donnees/volumes_d_eau_distribues.txt") ;
for (int i = 0 ; i < t.size() ; i++) {
cout << t[i] << endl ;
}
testLitTableauMois() ;
cout << somme(t) << endl ;
testSomme() ;
cout << moyenne(t) << endl ;
testMoyenne() ;
cout << t[indiceMax(t)] << endl ;
testIndiceMax() ;
vector <string> mois = {"janvier" , "février" , "mars" , "avril" , "mai" , "juin" , "juillet" , "août" , "septembre" , "octobre" , "novembre" , "décembre" }
cout << "Le volume total d'eau distribué dans l'année est de :" << somme(t) << endl ;
cout << "Le volume moyen par mois d'eau distribué dans l'année est de :" << moyenne() << endl ;
cout << "Le mois où on a distribué le plus d'eau dans l'année est le mois de :" << mois[indiceM(t)] << "avec un volume de :" << "t[indiceM(t)]" << endl ;
}
Configuration: Windows / Edge 17.17134
A voir également:
- Ne parvient pas à corriger ses erreurs en c++
- Comment corriger un message sur whatsapp - Guide
- Clémence souhaite faire calculer automatiquement les prix de 30 produits dans trois devises. elle a déjà saisi une formule de calcul pour le tarif du premier produit dans la première devise. corrigez sa formule afin que recopiée vers le bas puis vers la droite, elle remplisse correctement tout le tableau. - Forum Excel
- Impossible de corriger les problèmes, des paquets défectueux sont en mode « garder en l'état ». ✓ - Forum Debian
- Redémarrer pour réparer les erreurs de lecteur ✓ - Forum Windows 8 / 8.1
- Une ou plusieurs erreurs sont présentes dans le formulaire. merci de rectifier votre saisie en vous aidant des aides disponibles. - Forum VB / VBA
1 réponse
Bonjour,
Ligne 17, ça n'est pas du le début d'une fonction, les lignes 17 et 18 doivent être:
Ligne 101, il manque une parenthèse.
Ligne 118, il manque une accolade.
Et d'autres erreurs dans les dernières lignes.
Ligne 17, ça n'est pas du le début d'une fonction, les lignes 17 et 18 doivent être:
std::vector<int> litTableauMois( std::string nom_fichier ) {
std::ifstream fichierMois( nom_fichier.c_str() );Ligne 41, comment tester une fonction sans même l'appeler? Il faudrait ajouter
std::vector<int> t = litTableauMois( "donnees/volumes_d_eau_distribues.txt" );
Ligne 101, il manque une parenthèse.
Ligne 118, il manque une accolade.
Et d'autres erreurs dans les dernières lignes.
SahDa
Merci beaucoup