Ne parvient pas à corriger ses erreurs

Fermé
SahDa Messages postés 3 Date d'inscription samedi 8 décembre 2018 Statut Membre Dernière intervention 11 décembre 2018 - Modifié par SahDa le 8/12/2018 à 21:55
SahDa Messages postés 3 Date d'inscription samedi 8 décembre 2018 Statut Membre Dernière intervention 11 décembre 2018 - 9 déc. 2018 à 10:57
Bonsoir à tous, je débute en programmation, j'utilise le langage C++ et j'ai des difficultés à comprendre et corriger mes erreurs (dans une des photos, il y en a une clairement noté et pourtant je ne comprends pas où ça coince). Voici mon code ainsi que les messages affichés après tentative de compilation (pour la dernière fonction, j'ai volontairement décalé la ligne pour que ce soit visible via une capture d'écran.) Merci à tous pour votre aide.


2 réponses

Whismeril Messages postés 19080 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 6 juillet 2024 916
9 déc. 2018 à 09:44
Bonjour

dans le lien ci-dessous, tu trouvera comment poster un code, à la fois lisible, et copiable pour tester de notre coté.
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Nous sommes bénévoles, et pour beaucoup, on ne va pas s'embêter à décrypter une capture d'écran et en réécrire tout le code.
0
SahDa Messages postés 3 Date d'inscription samedi 8 décembre 2018 Statut Membre Dernière intervention 11 décembre 2018
9 déc. 2018 à 10:57
Bonjour Whismeril. Merci de m'avoir indiqué comment mettre mon code au bon format, je savais que c'était possible mais ne savais pas comment m'y prendre. Le voici visible et accessible.
#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 ; 
0