IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

C++ et lecture de tableau


Sujet :

C++

  1. #1
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut C++ et lecture de tableau
    Bonjour,

    Je suis débutant en C++ (hé oui lol). J'apprends ce langage puisqu'à l'école je travaille avec le c++ ... enfin bref passons
    Alors voilà mon "problème"

    Le code ci dessous permet de gérer une station météo... je rentre les données et en quittant le programme sauvegarde ce que j'ai rentré dans 2 fichiers ... vous comprendrez en lisant le code.
    Mon problème c'est que je n'arrive pas à charger le fichier "tempera.txt" comme il faut lors du chargement du programme .

    Voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    // Inclusion des fichiers bibliothèques
    #include <iostream.h>
    #include <stdlib.h>
     
    // Déclaration des Variables
    int nbmaxjour,nbjour;
    int nbmaxtemp,nbtemp,vtemp;
    int vrelevemoy,vreleve,vrelevemois,vmoyecart,vecart,vecarttot,vtempmoyjour,vtempjour,vtempmensuelleint,vtempmensuelle,nbretemp;
    int tbpluvio[31];
    int tbtemp[25][31];
     
    //Déclaration des procédures et fonctions
    void Menu( )
    {	system("CLS");
    	cout <<"Station Meteo \n";
    	cout <<"1 : Saisie des pluviometries du mois \n";
    	cout <<"2 : Affichage des pluviometries du mois et moyenne \n";
    	cout <<"3 : Saisie des temperatures \n";
    	cout <<"4 : Affichage des temperatures \n";
       cout <<"5 : Affichage temperature moyenne journaliere et mensuelle \n";
    	cout <<"0 : Quitter \n";
    }
     
    void SaisirPluvio( )
    {
     
      cout << "Nombre de jours dans le mois: ";
      cin >> nbjour;
          for (nbmaxjour=1;nbmaxjour<=nbjour;nbmaxjour=nbmaxjour+1)
          {
           cout <<"Valeur du releve: ";
           cin >> vreleve;
           tbpluvio[nbmaxjour]=vreleve;
          }
    }
     
    void AfficherPluvio( )
    {
         vecarttot=0;
         vmoyecart=0;
         vrelevemois=0;
         for (nbmaxjour=1;nbmaxjour<=nbjour;nbmaxjour=nbmaxjour+1)
         {
         cout<<tbpluvio[nbmaxjour]<<";";
         vrelevemois=vrelevemois+tbpluvio[nbmaxjour];
         }
         vrelevemoy=vrelevemois/nbjour;
         cout<<"Le cumul des releves est de: "<<vrelevemois<<" \n";
         cout<<"La moyenne des releves est de: "<<vrelevemoy<<" \n";
                       for (nbmaxjour=1;nbmaxjour<=nbjour;nbmaxjour=nbmaxjour+1)
                       {
                       if (tbpluvio[nbmaxjour]>vrelevemoy)
                       {
                       cout<<"Le jour numero "<<nbmaxjour<<" est superieur a "<<vrelevemoy<<" mm \n";
                       }
                       vecart=tbpluvio[nbmaxjour]-vrelevemoy;
                            if (vecart>0)
                            {
                             vecarttot=vecarttot+vecart;
                            }
                       vmoyecart=vecarttot/nbmaxjour;
                       }
         cout<<"L'ecart type est de "<<vmoyecart;
    }
     
    void SaisirTemp( )
    {
     cout << "Nombre de jours dans le mois: ";
     cin >> nbjour;
     cout << "Nombre de relevees de temperature par jour: ";
     cin >> nbretemp;
         for (nbmaxjour=1;nbmaxjour<=nbjour;nbmaxjour=nbmaxjour+1)
         {
         cout<<"\n";
         cout<<"Temperature du jour "<<nbmaxjour<<"\n";
            for (nbmaxtemp=1;nbmaxtemp<=nbretemp;nbmaxtemp=nbmaxtemp+1)
            {
            cout <<"Temperature du relevee "<<nbmaxtemp<<": ";
            cin >> vtemp;
            tbtemp[nbmaxtemp][nbmaxjour]=vtemp;
            }
         }
    }
     
    void AfficherTemp( )
    {
         for (nbmaxjour=1;nbmaxjour<=nbjour;nbmaxjour=nbmaxjour+1)
         {
         cout<<"\n";
         cout<<"Temperature du jour "<<nbmaxjour<<"\n";
            for (nbmaxtemp=1;nbmaxtemp<=nbretemp;nbmaxtemp=nbmaxtemp+1)
            {
            cout<<tbtemp[nbmaxtemp][nbmaxjour]<<" | ";
            }
         }
    }
     
     
    void AfficherTempPartiel ()
    {
       vtempmensuelle=0;
       vtempmensuelleint=0;
         for (nbmaxjour=1;nbmaxjour<=nbjour;nbmaxjour=nbmaxjour+1)
         {
         vtempjour=0;
         vtempmoyjour=0;
     
           for (nbmaxtemp=1;nbmaxtemp<=nbretemp;nbmaxtemp=nbmaxtemp+1)
            {
            vtempjour= vtempjour+tbtemp[nbmaxtemp][nbmaxjour];
            vtempmoyjour=vtempjour/nbretemp;
            }
         tbtemp[25][nbmaxjour]=vtempmoyjour;
         cout<<"La temperature moyenne pour la journee "<<nbmaxjour<<" est de "<<tbtemp[25][nbmaxjour]<<" degre(s)\n";
         vtempmensuelleint=vtempmensuelleint+vtempmoyjour;
         vtempmensuelle=vtempmensuelleint/nbjour;
         cout<<"La temperature moyenne mensuelle est de "<<vtempmensuelle<<" degre(s) \n";
     
             for (nbmaxjour=1;nbmaxjour<=nbjour;nbmaxjour=nbmaxjour+1)
             {
             if(tbtemp[25][nbmaxjour]>vtempmensuelle)
             cout<<"Le jour "<<nbmaxjour<<" a une temperature moyenne journaliere superieure a celle mensuelle \n";
             }
         }
    }
    void SauvegarderPluvio()
    { int i;
      FILE *fpluvio;
      if (nbjour>0)
      {
        cout << "Sauvegarde sur fichier des pluviometries...\n";
        fpluvio = fopen("pluvio.txt","w");
        for (i=1;i<=nbjour;i=i+1)
        {
          fprintf(fpluvio,"%d \n",tbpluvio[i]);
        }
        fclose(fpluvio);
      }
    }
     
    void ChargerPluvio()
    { int i;
      FILE *fpluvio;
     
      cout << "Chargement des pluviometries...\n";
      fpluvio = fopen("pluvio.txt","r");
      i=0;
      if (fpluvio==NULL)
         cout << "Fichier inexistant: pluvio.txt\n";
      else
      {  while (feof(fpluvio)==false)
         { i= i+1;
           fscanf(fpluvio,"%d \n",&tbpluvio[i]);
         }
         fclose(fpluvio);
      }
      nbjour = i;
      system ("Pause");
    }
     
    void SauvegarderTemp()
    { int i;
      FILE *ftemp;
      if (nbjour>0)
      {
        cout << "Sauvegarde sur fichier des temperatures...\n";
        ftemp = fopen("tempera.txt","w");
        fprintf(ftemp,"%d",nbretemp);
            for (nbmaxjour=1;nbmaxjour<=nbjour;nbmaxjour=nbmaxjour+1)
            {
            fprintf(ftemp,"%s","\n");
            for (nbmaxtemp=1;nbmaxtemp<=nbretemp;nbmaxtemp=nbmaxtemp+1)
            {
            fprintf(ftemp,"%d ",tbtemp[nbmaxtemp][nbmaxjour]);
            }
        }
        fclose(ftemp);
      }
    }
     
    void ChargerTemp()
    { int nbmaxjour,nbmaxtemp;
      FILE *ftemp;
     
      cout << "Chargement des temperatures...\n";
      ftemp = fopen("tempera.txt","r");
      i=0;
      x=0;
       if (ftemp==NULL)
         cout << "Fichier inexistant: tempera.txt\n";
      else
      {  while (feof(ftemp)==false)
         {
     
           nbmaxtemp= nbmaxtemp+1;
           nbmaxjour= nbmaxjour+1;
           fscanf(ftemp,"%d \n",&tbtemp[nbretemp][nbjour]);
     
     
     
         }
         fclose(ftemp);
      }
      nbjour = mbmaxjour;
      nbretemp = nbmaxjour;
      system ("Pause");
    }
     
     
     
    int main()
    {
        ChargerTemp();
        ChargerPluvio();
        int choix;
    	Menu();
    	cout <<"Entrez votre choix: ";
    	cin >>choix;
    	while (choix!=0)
    	{ 
    		switch (choix)
    		{
    			case 1: 	SaisirPluvio( );
    			         		break;
    			case 2: 	AfficherPluvio( );
                            break;
    			case 3: 	SaisirTemp( );
    					  break;
    			case 4: 	AfficherTemp( );
    					 break;
                case 5:     AfficherTempPartiel( );
                       break;
                default: 	cout <<"Erreur de choix\n";
    		}
    		system("PAUSE");
    		Menu();
    		cout <<"Entrez votre choix: ";
    		cin >>choix;
    	}
    	SauvegarderPluvio();
    	SauvegarderTemp();
     
    	system("PAUSE");
     
    }
    et voila un exemple de ce que contient le fichier tempera.txt

    La première ligne indique le nombre de relevé par jour
    La seconde les relevés de température du jour 1
    La troisième les relevés de température du jour 2
    Le problème, c'est que je n'arrive pas a recharger les valeur "123 456" correctement dans le tableau.

    Si vous pouvez m'aider S.V.P (désolé si mon message n'est pas très clair, je ne sais pas trop comment expliquer autrement ).
    Merci d'avance

  2. #2
    Membre éclairé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Par défaut
    Tu programme en c++
    Donc plus de FILE mais des ifstream/ofstream/fstream(In/Out/Les deux)
    Ce sont des classe qui permêtent de créer des objets objet un peut comme cin et cout, mais pour les fichier.

    Tu lit ensuite comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    std::ifstream fin("Monfichier.txt");//3;1;2;3;4;5;6 // 3 / 123 / 456
    int iterator;
    getline(fin, iterator, ";");//iterator = 3
    int N_base;
    while(getline(fin,N_base,";"))
    {
      tbtemp[nbretemp][nbjour] = N_base;
      nbretemp++;
      nbjour++;
    for(int i = 0; i+1 < iterator; i++)
    {
      int n;
      getline(fin,n,";")
      tbtemp[nbretemp][nbjour] = n;
      nbretemp++;
      nbjour++;
    }
      nbjour = mbmaxjour;
      nbretemp = nbmaxjour; 
    }
    (J'ai fait à la vas vite, donc pas sur que sa marche, mais la logique c'est a peut près sa.)

    Nb : Si j'ai bien comprit ta manip, le résultat doit être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    tbtemp[1][1] =1
    tbtemp[2][1] =2
    tbtemp[3][1] =3
    tbtemp[4][2] =4
    tbtemp[5][2] =5
    tbtemp[6][2] =6
    Je trouve cette methode inadapter, j'aurais utiliser plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    tbtemp[1][1] =1
    tbtemp[2][1] =2
    tbtemp[3][1] =3
    tbtemp[1][2] =4
    tbtemp[2][2] =5
    tbtemp[3][2] =6
    Enfaite, j'aurias mit d'abord le n°du jour, et ensuite le n° du temp. A moin que l'hor de l'utilisation du tableau tu a besoin que nbtemp soit avent nbjour(j'ai eu ce problèmme un jour en développen en php, j'ai du faire un tableau tab[y][x], ce qui est l'inverse de nos "habitudes")
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  3. #3
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Merci, mais je mets ta réponse de côté ...non pas qu'elle soit fausse mais que je dois utiliser les 'fonctions' fscanf et fprintf (comme pour le tableau à simple entrée...).
    Le problème c'est le chargement du fichier afin qu'il remplisse correctement les cases du tableau (la 1 colonne comporte tous les relevés du jour 1, la 2 du jour 2 ... etc, obligation du prof lol ).
    Une petite question tout de même: lors de la déclaration du tableau à double entrée, le premier indice indique le nombre de colonnes ou de lignes? (pour ma part j'ai pris le premier indice pour le nombre de lignes et le second indice celle de colonnes).Il est vrai que ta méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    tbtemp[1][1] =1 
    tbtemp[2][1] =2 
    tbtemp[3][1] =3 
    tbtemp[1][2] =4 
    tbtemp[2][2] =5 
    tbtemp[3][2] =6
    est plus logique et simpliste... si tu pouvais m'aider (si tu comprends toujours ce que je voudrais que le programme fasse )

    En tout cas, je te remercie pour ta réponse très rapide ce qui est très apprécié

  4. #4
    Membre éclairé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Par défaut
    Citation Envoyé par ero-sennin
    (pour ma part j'ai pris le premier indice pour le nombre de lignes et le second indice celle de colonnes).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    tbtemp[1][1] =1 
    tbtemp[2][1] =2 
    tbtemp[3][1] =3 
    tbtemp[1][2] =4 
    tbtemp[2][2] =5 
    tbtemp[3][2] =6
    Donc toi tu a choisi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    tbtemp[1][1] =1 
    tbtemp[1][2] =2 
    tbtemp[1][3] =3 
    tbtemp[2][1] =4 
    tbtemp[2][2] =5 
    tbtemp[2][3] =6
    ? *un peut perdu*

    Moi si je voulais faire un tel programme, je ferais ce que je vien de notter. A moin que pour une réson présise je ne puisse pas(comme le jour ou je me suis trimbaler un tableau [y][x] car je devais l'aficher sous la forme d'un tableau html, et que dans un tableau html, on met d'abord les lignes, et ensuite dedan les columnes)
    Citation Envoyé par ero-sennin
    (si tu comprends toujours ce que je voudrais que le programme fasse )
    Enfaite eu... Pas vraiment

    Sinon les i=i+1; sa revien au i++; ou ++i; ^^ Je dit sa parce que le nom du langage c++ vien de la
    Aussi le if(eof() == false) c'est a ne jamais faire pour dé réson de performance et de lisibilitée. On ne dit jamais : "Si le fait d'avoir attent la fin est faux". "On dit Si on a pas attein la fin" donc : if(!eof()).

    Et pour ton programme, quèl partie plente? Quèl est le résultat du chargement?

    Le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while (!feof(ftemp))
         {
           nbmaxtemp= nbmaxtemp+1;
           nbmaxjour= nbmaxjour+1;
           fscanf(ftemp,"%d \n",&tbtemp[nbretemp][nbjour]);
         }
    peut être adapter comme mon code précédent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    while (!feof(ftemp))
    {
           fscanf(ftemp,"%d \n",&tbtemp[nbretemp][nbjour]);
           nbretemp++;
           nbjour++;
    for(int i = 0; i+1 < iterator; i++)
    {
           fscanf(ftemp,"%d \n",&tbtemp[nbretemp][nbjour]);
           nbretemp++;
           nbjour++;
    }
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  5. #5
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    fopen, fscanf, etc... c'est du C. En C++ c'est [i][o]fstream.
    Ton test avec eof() est incorrect, car il peut y avoir erreur sans être à la fin du fichier. Une solution à base des flux C++:
    http://c.developpez.com/faq/cpp/?pag...re_ecriture_ok
    et au passage:
    http://c.developpez.com/faq/cpp/?pag...le#SL_iostream

  6. #6
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Rebonjour,

    Après une bonne nuit :o je vais essayer d'être beaucoup plus clair.

    Le code que j'ai posté ci dessus, permet de gérer une station météo.
    Il y a une partie consacrée aux pluviométries et une autre consacrée aux températures.
    Une fois les données saisies, le programme enregistrer mes données d'une part dans un fichier pluvio.txt en ce qui concerne les pluviométries et d'autre part dans un fichier tempera.txt en ce qui concerne les températures.

    -L'enregistrement et le chargement des données pour les pluviométries ne posent pas de problème...

    -L'enregistrement des données pour la température ne pose pas de problème... les données étant enregistrées comme suit :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    3	nombre de températures par jours
    1  2  3       températures du jour 1
    4  5  6	températures du jour 2
    etc	etc
    On voit donc que le programme enregistre sur une même ligne les différentes températures pour le jour concerné... mais lors du chargement, le programme doit ranger ces valeurs par lignes (colonne 1 = jour 1, ligne 1 = température 1, ligne 2 température 2, etc ...)

    Lorque je lance le programme et que je demande d'afficher les températures précédentes ( 1 2 3 pour le jour 1 et 4 5 6 pour le jour 2), le programme m'affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    1 0
    0 3
    0 0
    0 0
    et dans le fichier tempera.txt, on trouve ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    4
    1 0 0 0 
    0 3 0 0
    .

    Voila donc le problème
    En ce qui concerne la programmation, il est vrai que l'on peut utiliser les notions de c++ mais malheureusement mon prof nous a dit que pour l'instant c'était les notions en c qu'on utilise (ne me demandait pas pourquoi lol )...

    Voila, vous savez tout en espérant que ca soit plus clair au niveau de la compréhension (pas simple d'expliquer tout par écrit )

    Merci ...

  7. #7
    Membre éclairé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Par défaut
    Cmme si on ne pouvais pas apprendre le c++ sans commencer par le C. Enfin bref, donc, alors, il y a un problème avec l'écriture et la lecture.
    Donc je vais regarder les deux fonctions.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    /////////////////
    int NbDeTemp;//Taille des "packets" de température
    /////////////////
    void SauvegarderTemp()
    { int i;
      FILE *ftemp;
      if (nbjour>0)
      {
        cout << "Sauvegarde sur fichier des temperatures...\n";
        ftemp = fopen("tempera.txt","w");
    ////////////////////////////////////////////(tu a oublier de tester si le ficheir est bien ouvert ^^)/////////////////////////
        fprintf(ftemp,"%d",NbDeTemp);
            fprintf(ftemp,"%s","\n");
            for (nbmaxjour=1;nbmaxjour<=nbjour;nbmaxjour++)
            {
            for (nbmaxtemp=1;nbmaxtemp<=nbretemp;nbmaxtemp++)
            {
            fprintf(ftemp,"%d ",tbtemp[nbmaxtemp][nbmaxjour]);
            }
            fprintf(ftemp,"%s","\n");
        }
    ///////////////////////////////////////////////////////////////////////////////////////////
        fclose(ftemp);
      }
    }
     
    void ChargerTemp()
    { int nbmaxjour,nbmaxtemp;
      FILE *ftemp;
     
      cout << "Chargement des temperatures...\n";
      ftemp = fopen("tempera.txt","r");
      i=0;
      x=0;
       if (ftemp==NULL)
         cout << "Fichier inexistant: tempera.txt\n";
      else
      {
    //////////////////////////////////////////////////
    fscanf(ftemp,"%d \n",&NbDeTemp);//On récupère la taille des packets
    //////////////////////////////////////////////////
      while (!feof(ftemp))
         {
    for(int iterator = 1; i < NbDeTemp; i++)//On boucle pour récupèrer les packets en plus(2temperatur ici)
           fscanf(ftemp,"%d ",&tbtemp[nbretemp][nbjour]);
           nbmaxtemp++;
           nbmaxjour++;
    }
    /////////////////////////////////////////////////
           fscanf(ftemp,"%d \n",&tbtemp[nbretemp][nbjour]);//On récupère le packet par défault(Il y auras toujours au moin 1 températur de récupèrer!
           nbmaxtemp= 0;
           nbmaxjour++;
    ////////////////////////////////////////////////
         }
         fclose(ftemp);
      }
      nbjour = mbmaxjour;
      nbretemp = nbmaxjour;
      system ("Pause");
    }
    Voila je pensse que sa doit marcher(pas tester). Tu me tien au courant?(j'ai garder ta methode d'ordonation tbtemp[Temp(1à3)][Jour])
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  8. #8
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Merci bien, je m'y mets de suite ... Il y a des erreurs .... je regarde et je te tiens au courant... no soucy
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    [C++ Erreur] TP6bis2.cpp(192): E2451 Symbole 'i' non défini
    [C++ Erreur] TP6bis2.cpp(193): E2451 Symbole 'x' non défini
    [C++ Avertissement] TP6bis2.cpp(204): W8004 'iterator' est affecté à une valeur qui n'est jamais utilisée
    [C++ Erreur] TP6bis2.cpp(216): E2303 Nom de type attendu
    [C++ Erreur] TP6bis2.cpp(216): E2238 Déclaration multiple pour 'nbjour'
    [C++ Erreur] TP6bis2.cpp(6): E2344 Déclaration plus récente de 'nbjour'
    [C++ Erreur] TP6bis2.cpp(216): E2451 Symbole 'mbmaxjour' non défini
    [C++ Erreur] TP6bis2.cpp(217): E2303 Nom de type attendu
    [C++ Erreur] TP6bis2.cpp(217): E2238 Déclaration multiple pour 'nbretemp'
    [C++ Erreur] TP6bis2.cpp(8): E2344 Déclaration plus récente de 'nbretemp'
    [C++ Erreur] TP6bis2.cpp(218): E2303 Nom de type attendu
    [C++ Erreur] TP6bis2.cpp(218): E2356 Mauvaise correspondance de type dans la redéclaration de 'system(const char *)'
    [C++ Erreur] TP6bis2.cpp(218): E2063 Initialisation incorrecte
    [C++ Erreur] TP6bis2.cpp(218): E2293 ) attendue
    [C++ Erreur] TP6bis2.cpp(219): E2190 } inattendue

    Sans doute @ tout de suite...

  9. #9
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Je m'avoue vaincu je pense ! 'ai du mal à comprendre certaines choses et n'arrive pas à corriger les erreurs affichées . J'essaierai de faire regarder encore et encore ! Je vais bien finir par y arriver ! Si jamais tu testes le programme en son entier et que cela marche, fait en moi part stp (bien entendu, c'est comme bon te sembles lol).

    En général, on dit que la nuit porte conseil ..... on verra donc cela demain LOL.

    Dans tous les cas, je te remercie de t'interressé tant à mon cas...

  10. #10
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 116
    Par défaut
    Donne toujours ton code (tout) en téléchargement quelque part, si je trouve un peu de temps, je regarderai ça ..

  11. #11
    Membre éclairé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    [C++ Erreur] TP6bis2.cpp(192): E2451 Symbole 'i' non défini //A tu dfini ta variable?(int i;)
    [C++ Erreur] TP6bis2.cpp(193): E2451 Symbole 'x' non défini //A tu défini ta variable?(int x;)
    [C++ Avertissement] TP6bis2.cpp(204): W8004 'iterator' est affecté à une valeur qui n'est jamais utilisée//Tu t'en fou, le compilateur trouve juste bizare que on fasse iterator = 1; dans une boule. Sa vien du fait que on prend obligatoirement 1 température, il y a donc NbDeTemp-1 a charger dnas la première boucle. Seulement le fait de faire : iterator = 0; iterator < NbDeTemp-1 peut faire plenter le programe.
    [C++ Erreur] TP6bis2.cpp(216): E2303 Nom de type attendu 
    [C++ Erreur] TP6bis2.cpp(216): E2238 Déclaration multiple pour 'nbjour'//Tu a marquer deux fois dnas le programe : int nbjour !
    [C++ Erreur] TP6bis2.cpp(6): E2344 Déclaration plus récente de 'nbjour'//Ici tu l'a déclarer pour la première fois
    [C++ Erreur] TP6bis2.cpp(216): E2451 Symbole 'mbmaxjour' non défini//Faute de fra p :nbmaxjour et non mbmaxjour !
    [C++ Erreur] TP6bis2.cpp(217): E2303 Nom de type attendu
    [C++ Erreur] TP6bis2.cpp(217): E2238 Déclaration multiple pour 'nbretemp'//Tu la enocore déclarer deux fois!
    [C++ Erreur] TP6bis2.cpp(8): E2344 Déclaration plus récente de 'nbretemp'//Ici tu la déclarer pour la première fois!
    [C++ Erreur] TP6bis2.cpp(218): E2303 Nom de type attendu
    [C++ Erreur] TP6bis2.cpp(218): E2356 Mauvaise correspondance de type dans la redéclaration de 'system(const char *)'
    [C++ Erreur] TP6bis2.cpp(218): E2063 Initialisation incorrecte
    [C++ Erreur] TP6bis2.cpp(218): E2293 ) attendue
    [C++ Erreur] TP6bis2.cpp(219): E2190 } inattendue//Tu a du faire une big faute de frape, du genre d'oublier un )
    Je corige et recompile ton code
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  12. #12
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Salut thibouille !

    Mon code se trouve en première page (tout en haut donc) et tout y est. Je ne vois pas trop ce que tu veux de plus ...

  13. #13
    Membre éclairé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
     
    // Inclusion des fichiers bibliothèques
    #include <iostream.h>
    #include <stdlib.h>
     
    // Déclaration des Variables
    int MaxTemp = 0;
    int MaxJour = 0;
    int TabTemp[25][31];
     
    //Déclaration des procédures et fonctions
    void Menu( )
    {
       system("CLS");
       cout <<"Station Meteo \n";
       cout <<"[Desactiver]1 : Saisie des pluviometries du mois \n";
       cout <<"[Desactiver]2 : Affichage des pluviometries du mois et moyenne \n";
       cout <<"[Desactiver]3 : Saisie des temperatures \n";
       cout <<"[Desactiver]4 : Affichage des temperatures \n";
       cout <<"[Desactiver]5 : Affichage temperature moyenne journaliere et mensuelle \n";
       cout <<"0 : Quitter \n";
    }
    //Les variables globales int MaxTemp et int MaxJour sont modifier!
    //Variable globale de température ( int ** TabTemp ) utiliser!
    void ChargerTemp()
    {
      //Itérateures pour complèter le tableau
      int IteratorTemp = 0;
      int IteratorJour = 0;
     
      //Nombre de Températures par jour
      int NbDeTemp = 0;
     
      cout << "Chargement des temperatures...\n";
      FILE *ftemp;
      ftemp = fopen("tempera.txt","r");
     
      if (ftemp == NULL)
        cout << "Fichier inexistant: tempera.txt\n";
      else
      {
        fscanf(ftemp,"%d \n",&NbDeTemp);
        while (!feof(ftemp))
        {
          for(int iterator = 1; iterator < NbDeTemp; iterator++)
          {
            //Chargement de NbDeTemp-1 température
            fscanf(ftemp,"%d ",&TabTemp[IteratorTemp][IteratorJour]);
            std::cerr << "tbtemp["<< IteratorTemp << "][" << IteratorJour << "] = " << TabTemp[IteratorTemp][IteratorJour] << "\n";
            IteratorTemp++;
          }
          //Chargement de l dernière température et fin du jour!
          fscanf(ftemp,"%d \n",&TabTemp[IteratorTemp][IteratorJour]);
          std::cerr << "tbtemp["<< IteratorTemp << "][" << IteratorJour << "] = " << TabTemp[IteratorTemp][IteratorJour] << "\n";
          IteratorTemp++;
          IteratorJour++;
          //On modifie le nombre maximume de MaxTemp & MaxJour
          MaxTemp += IteratorTemp;
          MaxJour += IteratorJour;
        }
        fclose(ftemp);
      }
      system ("Pause");
    }
     
    int main()
    {
       ChargerTemp();
       //ChargerPluvio();
       int choix;
       Menu();
       cout <<"Entrez votre choix: ";
       cin >>choix;
       while (choix)
       {
          switch (choix)
          {
             //case 1:    SaisirPluvio( );
             //               break;
             //case 2:    AfficherPluvio( );
             //               break;
             //case 3:    SaisirTemp( );
             //        break;
             //case 4:    AfficherTemp( );
             //       break;
             //   case 5:     AfficherTempPartiel( );
             //          break;
                default:    cout <<"Erreur de choix\n";
          }
          system("PAUSE");
          Menu();
          cout <<"Entrez votre choix: ";
          cin >>choix;
       }
       //SauvegarderPluvio();
       //SauvegarderTemp();
     
       system("PAUSE");
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Chargement des temperatures...
    tbtemp[0][0] = 1
    tbtemp[1][0] = 2
    tbtemp[2][0] = 3
    tbtemp[3][1] = 4
    tbtemp[4][1] = 5
    tbtemp[5][1] = 6
    Appuyez sur une touche pour continuer...
    J'éspère que ceci pouras t'aider, mentenant a toi de programmer la fonction d'enregistrement en te basan sur ce code. Pensse pour tes variables a rendre le nom visible. Les majuscules et sous-tirests(_) sont tes amis ^^
    Je me suis permit de refaire l'alignement du texte et de changer le nom des variables.
    Sinon pour le tableau tu peut inverser les [NbTemp][NbJour] sans problème, il sufit de le faire partout dans le code et le fonctionement resteras identique ^^
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  14. #14
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Merci l'ami

    Je vais tester cela dès que possible! Merci pour ce boulot (cependant rien ne sert de copier, il faut savoir comprendre )

    Je te tiens au courant dès que possible .... encore merci

  15. #15
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Comme promis, je te tiens au courant (un peu longue la réponse, mais j'avais d'autres préoccupations et je voulais aussi d'abord comprendre le code ...)

    J'ai donc essayé ton code. Il fonctionne mais toujours un problème lol.
    J'explique :
    Au chargement du programme, j'ai les valeur que j'ai rentrée, mais lorsque je veux les afficher via le menu 4, hé bien, il n'y a plus rien. J'ai cherché (si si, mais rien qu'un peu lol) et j'ai réussi a faire en sorte qu'il m'affiche quelque chose (mais ca correspond pas). D'après moi le probème vient du fait qu'il lit mal le tableau (puisque apparremment le remplissage se fait correctement)

    Voila les news !
    Je mets le topic comme étant résolu même si c'est pas tout a fait fini :o

  16. #16
    Membre éclairé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Par défaut
    Si tu regarde le code, j'ai passer le tout en commentaire
    Donc le code n'est plus aficher.
    Tu remarqueras aussi que j'ai modifier et suprimer les variables que tu avias fait, de manière a que ce soit plus compréenssible.
    Mentenant il te faut re-écrire la fonction d'afichage.(et les autres fonctions)
    Je te donne un peut d'aide pour aficher la totalitée du tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //J -> Par exemple : 1,2,3,4,5
    //Ce qui implique : J = 1, J = 2, J = 3 ...
    //T -> Par exemple : 1,2,3,4,5
    //Ce qui implique : J=1 [T=1,T=2,T=3...] J=2 [T=1,T=2...] ...
     
    Pour J = 0, J < Nombre de jour, J ++
       Pour T = 0, T < Nombre de temp, T++
          Afficher Tableau[T][J]
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  17. #17
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Oui, merci !
    J'ai réécri le code avec mes variables...
    Je te le poste en entier (si jamais tu vois une erreur ... informe moi stp).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
     
    // Inclusion des fichiers bibliothèques
    #include <iostream.h>
    #include <stdlib.h>
     
    // Déclaration des Variables
    int nbmaxjour,nbjour;
    int nbmaxtemp,nbtemp,vtemp;
    int vrelevemoy,vreleve,vrelevemois,vmoyecart,vecart, vecarttot,vtempmoyjour,vtempjour,vtempmensuelleint,vtempmensuelle,nbretemp;
    int tbpluvio[31];
    int tbtemp[25][31];
     
    //Déclaration des procédures et fonctions
    void Menu( )
    {	system("CLS");
    	cout <<"Station Meteo \n";
    	cout <<"1 : Saisie des pluviometries du mois \n";
    	cout <<"2 : Affichage des pluviometries du mois et moyenne \n";
    	cout <<"3 : Saisie des temperatures \n";
    	cout <<"4 : Affichage des temperatures \n";
            cout <<"5 : Affichage temperature moyenne journaliere et mensuelle \n";
    	cout <<"0 : Quitter \n";
    }
     
    void SaisirPluvio( )
    {
     
      cout << "Nombre de jours dans le mois: ";
      cin >> nbjour;
          for (nbmaxjour=1;nbmaxjour<=nbjour;nbmaxjour=nbmaxjour+1)
          {
           cout <<"Valeur du releve: ";
           cin >> vreleve;
           tbpluvio[nbmaxjour]=vreleve;
          }
    }
     
    void AfficherPluvio( )
    {
         vecarttot=0;
         vmoyecart=0;
         vrelevemois=0;
         for (nbmaxjour=1;nbmaxjour<=nbjour;nbmaxjour=nbmaxjour+1)
         {
         cout<<tbpluvio[nbmaxjour]<<";";
         vrelevemois=vrelevemois+tbpluvio[nbmaxjour];
         }
         vrelevemoy=vrelevemois/nbjour;
         cout<<"Le cumul des releves est de: "<<vrelevemois<<" \n";
         cout<<"La moyenne des releves est de: "<<vrelevemoy<<" \n";
                       for (nbmaxjour=1;nbmaxjour<=nbjour;nbmaxjour=nbmaxjour+1)
                       {
                       if (tbpluvio[nbmaxjour]>vrelevemoy)
                       {
                       cout<<"Le jour numero "<<nbmaxjour<<" est superieur a "<<vrelevemoy<<" mm \n";
                       }
                       vecart=tbpluvio[nbmaxjour]-vrelevemoy;
                            if (vecart>0)
                            {
                             vecarttot=vecarttot+vecart;
                            }
                       vmoyecart=vecarttot/nbmaxjour;
                       }
         cout<<"L'ecart type est de "<<vmoyecart;
    }
     
    void SaisirTemp( )
    {
     cout << "Nombre de jours dans le mois: ";
     cin >> nbjour;
     cout << "Nombre de relevees de temperature par jour: ";
     cin >> nbretemp;
         for (nbmaxjour=1;nbmaxjour<=nbjour;nbmaxjour=nbmaxjour+1)
         {
         cout<<"\n";
         cout<<"Temperature du jour "<<nbmaxjour<<"\n";
            for (nbmaxtemp=1;nbmaxtemp<=nbretemp;nbmaxtemp=nbmaxtemp+1)
            {
            cout <<"Temperature du relevee "<<nbmaxtemp<<": ";
            cin >> vtemp;
            tbtemp[nbmaxtemp][nbmaxjour]=vtemp;
            }
         }
    }
     
    void AfficherTemp( )
    {
         for (nbmaxjour=1;nbmaxjour<=nbjour;nbmaxjour=nbmaxjour+1)
         {
         cout<<"\n";
         cout<<"Temperature du jour "<<nbmaxjour<<"\n";
            for (nbmaxtemp=1;nbmaxtemp<=nbretemp;nbmaxtemp=nbmaxtemp+1)
            {
            cout<<tbtemp[nbmaxtemp][nbmaxjour]<<" | ";
            }
         }
    }
     
     
    void AfficherTempPartiel ()
    {
       vtempmensuelle=0;
       vtempmensuelleint=0;
         for (nbmaxjour=1;nbmaxjour<=nbjour;nbmaxjour=nbmaxjour+1)
         {
         vtempjour=0;
         vtempmoyjour=0;
     
           for (nbmaxtemp=1;nbmaxtemp<=nbretemp;nbmaxtemp=nbmaxtemp+1)
            {
            vtempjour= vtempjour+tbtemp[nbmaxtemp][nbmaxjour];
            vtempmoyjour=vtempjour/nbretemp;
            }
         tbtemp[25][nbmaxjour]=vtempmoyjour;
         cout<<"La temperature moyenne pour la journee "<<nbmaxjour<<" est de "<<tbtemp[25][nbmaxjour]<<" degre(s)\n";
         vtempmensuelleint=vtempmensuelleint+vtempmoyjour;
         vtempmensuelle=vtempmensuelleint/nbjour;
         cout<<"La temperature moyenne mensuelle est de "<<vtempmensuelle<<" degre(s) \n";
     
             for (nbmaxjour=1;nbmaxjour<=nbjour;nbmaxjour=nbmaxjour+1)
             {
             if(tbtemp[25][nbmaxjour]>vtempmensuelle)
             cout<<"Le jour "<<nbmaxjour<<" a une temperature moyenne journaliere superieure a celle mensuelle \n";
             }
         }
    }
    void SauvegarderPluvio()
    { int i;
      FILE *fpluvio;
      if (nbjour>0)
      {
        cout << "Sauvegarde sur fichier des pluviometries...\n";
        fpluvio = fopen("pluvio.txt","w");
        for (i=1;i<=nbjour;i=i+1)
        {
          fprintf(fpluvio,"%d \n",tbpluvio[i]);
        }
        fclose(fpluvio);
      }
    }
     
    void ChargerPluvio()
    { int i;
      FILE *fpluvio;
     
      cout << "Chargement des pluviometries...\n";
      fpluvio = fopen("pluvio.txt","r");
      i=0;
      if (fpluvio==NULL)
         cout << "Fichier inexistant: pluvio.txt\n";
      else
      {  while (feof(fpluvio)==false)
         { i= i+1;
           fscanf(fpluvio,"%d \n",&tbpluvio[i]);
         }
         fclose(fpluvio);
      }
      nbjour = i;
      system ("Pause");
    }
     
    void SauvegarderTemp()
    { int i;
      FILE *ftemp;
      if (nbjour>0)
      {
        cout << "Sauvegarde sur fichier des temperatures...\n";
        ftemp = fopen("tempera.txt","w");
        fprintf(ftemp,"%d",nbretemp);
            for (nbmaxjour=1;nbmaxjour<=nbjour;nbmaxjour=nbmaxjour+1)
            {
            fprintf(ftemp,"%s","\n");
            for (nbmaxtemp=1;nbmaxtemp<=nbretemp;nbmaxtemp=nbmaxtemp+1)
            {
            fprintf(ftemp,"%d ",tbtemp[nbmaxtemp][nbmaxjour]);
            }
        }
        fclose(ftemp);
      }
    }
     
    //Les variables globales int MaxTemp et int MaxJour sont modifier!
    //Variable globale de température ( int ** TabTemp ) utiliser! 
    void ChargerTemp() 
    {
      //Itérateures pour complèter le tableau 
      int Temp = 0;
      int Jour = 0;
     
      //Nombre de Températures par jour 
      nbretemp = 0;
     
      cout << "Chargement des temperatures...\n";
      FILE *ftemp;
      ftemp = fopen("tempera.txt","r");
     
      if (ftemp == NULL)
        cout << "Fichier inexistant: tempera.txt\n";
      else
      {
        fscanf(ftemp,"%d \n",&nbretemp);
        while (!feof(ftemp)) 
        {
          for(int i = 1; i < nbretemp; i++)
          { 
            //Chargement de NbDeTemp-1 température
     
            fscanf(ftemp,"%d ",&tbtemp[Temp][Jour]);
            cout << "tbtemp["<< Temp << "][" << Jour << "] = " << tbtemp[Temp][Jour] << "\n";
            Temp++;
          } 
          //Chargement de l dernière température et fin du jour!
          fscanf(ftemp,"%d \n",&tbtemp[Temp][Jour]);
          std::cerr << "tbtemp["<< Temp << "][" << Jour << "] = " << tbtemp[Temp][Jour] << "\n";
          Temp++;
          Jour++;
     
          //On modifie le nombre maximume de MaxTemp & MaxJour
          nbmaxtemp = nbmaxtemp+Temp;
          nbmaxjour = nbmaxjour+Jour;
        }
        fclose(ftemp); 
      } 
      system ("Pause");
    }
     
     
     
    int main()
    {
        ChargerTemp();
        ChargerPluvio();
        int choix;
    	Menu();
    	cout <<"Entrez votre choix: ";
    	cin >>choix;
    	while (choix!=0)
    	{
    		switch (choix)
    		{
    			case 1: 	SaisirPluvio( );
    			         		break;
    			case 2: 	AfficherPluvio( );
                            break;
    			case 3: 	SaisirTemp( );
    					  break;
    			case 4: 	AfficherTemp( );
    					 break;
                case 5:     AfficherTempPartiel( );
                       break;
                default: 	cout <<"Erreur de choix\n";
    		}
    		system("PAUSE");
    		Menu();
    		cout <<"Entrez votre choix: ";
    		cin >>choix;
    	}
    	SauvegarderPluvio();
    	SauvegarderTemp();
     
    	system("PAUSE");
     
    }
    PS : J'espère ne pas trop t'embéter avec mon "problème".... si jamais, tu peux laisser tomber

    Encore merci de me répondre :o

  18. #18
    Membre éclairé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Par défaut
    Enfaite, si j'i changer le nom des variables, et suprimer certaines, c'est que le nom toutenminusculeattacher est bocoup moin lisible que ToutEnMinusculeAttacher. En plus tu déclare deux variables diférente pour la même opération dans deux fonction diférente, et ces deux variables en globales?!
    Chaque variable doit avoir sa réson d'être. Une variable qui ne ser que 5minute ne doit rester en mémoire que 5minute.
    Si une variable ne ser que duran une boucle, elle doit être suppriumer a la fin de la boucle.
    Ensuite l'usage abusif des variable1,variable2,variable3 sans réson présise rend encore une fois la lecture dificile.
    Et pour finir, les commentaires servent énormment.
    Un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    /******************************
    *       Fonction Azerty       *
    ******************************/
    Ne fait pas de male!

    Biensur ce n'est ici que m'on avie, mais quand je lit un code j'aime bien comprendre son fonctionement au premier coup d'oeuille ^^
    Et, je ne fait ces remarque que dnas le but que tu progrèsse, ton code ma donner du file a retordre, plus par le manque desplication(commentaires) et d'explicitée dans le code(nom des variables, utilisation de var++ ect...) que par une réèle dificulter dans la compréhesion de la logique.


    Edit : J'ai remarquer aussi que tu avais quelques dificultées avec l'alignement, donc voici quelques "règles" pour rendre plus lisible le code :
    -Les fonctions : Il existe deux types d'alignement pour les fonctions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    fonction(param, param, param, param) {
      //Blabla
    }
     
    fonction(param, param, param, param)
    {
      //Blabla
    }
    On peut mêtre des espaces entre les parentaise et la fonction, entre les parentaise et la lise d'argument. On préfère garder la logique : Argument<virgule><espace>[Arg, ] qui est la mise en page n'ormale des traitement de texte.
    On gardera toujours la m^me manière d'aligner et de mêtre es espaces, ainsi si on choisi : fonction ( arg, arg, arg ) on évitera fonction (arg, arg, arg). Mais il arrive parfois que d'un jour a l'autre on change sans trop s'en rendre compte les espacement. Le point a conserver tout prix est le choix pour l'acolade.

    Contenu : Pour le contenu, on utilise un même alignement, des saut de ligne et des comentaire pour séparer les diférentes étapes. On ne change l'alignement d'un texte que dnas le but de faire resortir sa parentée a un codé précédent (exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if( teste )
         Ceci sera efectuer que si le if a lieu
    Mais ceci est effectuer tout le temp
    On utiliseras parfois dans des cas extrèmement rare(sa mest ariver 2 fois) le décalage dans une potion de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    blabla
       blalamitenrelief
    blabla
    Variables : On met des noms de variables ecplicites! Il existes diférent type de nomination des variables :
    typeNom -> bool bIsOk
    Nom -> IsOK
    Pour séparer parfois un utilisera le _, mai la encore on vas notter : NbObjet mais Surface_Cercle(Nombre de Objet, n voit bien la liéson, mais entre la surface et le cercle, il n'y a pas de grand raprochement, si ce n'est deux caractéristique de la variable : Cette variable est une variable de surface. Cette variable stocke le contenu d'un cercle.)

    Voila un petit tour d'horizon rapide
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lecture données tableau croisé dynamique
    Par Jackeline dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/07/2007, 13h16
  2. [Tableaux] lecture du tableau $_FILE
    Par gforce dans le forum Langage
    Réponses: 12
    Dernier message: 05/06/2007, 17h02
  3. Lecture de tableau par pointeur
    Par SPACHFR dans le forum Débuter
    Réponses: 7
    Dernier message: 16/05/2007, 16h43
  4. Réponses: 3
    Dernier message: 05/02/2006, 22h59
  5. erreur de lecture de tableau incompréhensible
    Par Anouschka dans le forum C++
    Réponses: 2
    Dernier message: 27/01/2006, 13h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo