Ne parvient pas à corriger ses erreurs en c++

SahDa Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
 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 :
#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

Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   101
 
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 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.
0
SahDa
 
Merci beaucoup
0