Algorithme tableaux

IR83 Messages postés 2 Date d'inscription mercredi 11 mars 2009 Statut Membre Dernière intervention 13 avril 2009 - 11 mars 2009 à 18:51
IR83 Messages postés 2 Date d'inscription mercredi 11 mars 2009 Statut Membre Dernière intervention 13 avril 2009 - 12 mars 2009 à 11:40
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

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
11 mars 2009 à 20:19
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;
}
0
IR83 Messages postés 2 Date d'inscription mercredi 11 mars 2009 Statut Membre Dernière intervention 13 avril 2009
12 mars 2009 à 11:40
Merci beaucoup, j'ai modifié l'algo et ça marche.
a ++
0
Rejoignez-nous