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
1 réponse
-
Bonjour,
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 ajouterstd::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.