Algorithme tableaux

Signaler
Messages postés
2
Date d'inscription
mercredi 11 mars 2009
Statut
Membre
Dernière intervention
13 avril 2009
-
Messages postés
2
Date d'inscription
mercredi 11 mars 2009
Statut
Membre
Dernière intervention
13 avril 2009
-
Salut!!
Je ne suis pas programmeuse, je travaille sur des données. Et je veux faire du tri dans ces données.

J'ai un tabeaux (en .txt) avec un nombre de lignes et de colonne definis (50 et 3), il contient des entiers.

Mon but est de faire un programme qui lise mon .txt, fasse du tri et enregistre dans des fichiers.
Pour le moment j'essai d'atteindre la 3eme colonne, (donc nº2) et de séparer les données en trois tas et chacun contenus dans un fichiers à part après.
<40
<=40 et <70
<70
J'ai ecrit ça:
#include
#include <fstream>
#include <string>
#define WIDTH 3
#define HEIGHT 50

using namespace std;
int data [HEIGHT][WIDTH];
int data2[50][3];
int data3[50][3];
int data4[50][3];
int i,j;
int main()
{
      
    string line;
    ifstream myfile ("SL133.txt");
    if (myfile.is_open())
   {
       while (! myfile.eof () )
       {
             getline (myfile,line);
             cout << line << endl;
       }
       for  (i=0;i<=HEIGHT;i++)
          for  (j=0;j<=WIDTH;j++)
          
             if((data[i][2])<40)
             {
             data2[i][j]=data[i][j];            
              ofstream myfile;
              myfile.open ("SL133_b1");
              myfile << data2[i][j];
              myfile.close();
            
              }
               else if(data[i][2]>40 & data[i][2]<70)
             {
             
              data3 [i][j]=data[i][j];
               ofstream myfile;
               myfile.open ("SL133_b2");
               myfile << data3[i][j];
               myfile.close();
              }
              else
              {
            
               data4 [i][j]=data[i][j];
               ofstream myfile;
               myfile.open ("SL133_b3");
               myfile << data4[i][j];
               myfile.close();
              }
           
      myfile.close();
   }
   else cout << "Unable to open file";
   return 0;   
}

quand je fait tourner le programme j'ai bien les 3 fichiers crées mais dedans ils y'a un tableau de 1 ligne et 1 colonne avec un entier   alors que je veux un tableau a 3 colonnes et  le nombre de ligne correspondant à ceux qui sera trié.
est - ce un problème dû aux itérateurs ou bien j'ai mis la mauvaise commande pour sauver les données?

Merci beaucoup pour votre aide
indy

2 réponses

Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
Tu peux t'inspirer de ceci par exemple :

#include

#include
<fstream>
using
namespace std;
int

main()
{
   ifstream in1(
"C:\\in.txt");
   ofstream out1(
"C:\\out1.txt"),out2(
"C:\\out2.txt"),out3(
"C:\\out3.txt");

   int col1,col2,col3;
   
if(!in1.is_open())
return 0x1;
   
while(!in1.eof())
   {
      in1>>col1>>col2>>col3;
      
if(col3<40) out1<<col3<<endl;  
      
else
if(col3>70) out3<<col3<<endl;
      
else out2<<col3<<endl;
   }
   in1.close();
   out1.close();
   out2.close();
   out3.close();
   
return 0x0;
}
Messages postés
2
Date d'inscription
mercredi 11 mars 2009
Statut
Membre
Dernière intervention
13 avril 2009

Merci beaucoup, j'ai modifié l'algo et ça marche.
a ++