Groupe : Membres
|
Bonjour,
Je souhaite ecrire des donnees lues dans un fichier donné et les réecrire dans différents fichiers a chaque passage dans lq boucle sur k.
Voici mon code :
Code : C++ 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 | #include<fstream>
#include<stdio.h>
#include <stdlib.h>
#include <math.h>
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
fstream read("donnees.dat",ios::in);
fstream write1("case1.dat", ios::out);
fstream write2("element2.dat",ios::out);
fstream write3("case2.dat", ios::out);
fstream write4("case3.dat", ios::out);
fstream write5("element3.dat", ios::out);
double x,compteur;
double a[4500][5];
int i,j,k;
for(k=0;k<4;k++)
{
readstellib>>compteur;
readstellib>>x;
cout<<"compteur="<<compteur<<endl;
for(i=0;i<compteur;i++)
{
for(j=0;j<5;j++)
{
read>a[i][j];
}
write1<<a[i][0]<<endl; // le probleme se situe ici : comment modifier le write1 en write2 etc a chaque passage ds la boucle sur k ??
}
}
return 0;
}
|
Mon probleme est que je ne sais pas comment pouvoir modifier le write1 à chaque tour dans la boucle sur k. Cést a dire que j'aimerais avoir write1 dans le 1er tour de boucle, write2 dans le second...
Est-ce possible, si oui comment ? et sinon y a-t-il une autre possibilité ?
Merci d'avance !!
|
Groupe : Membres
|
Tableau de fstream, et tu écris dans le (i%5)-ième ?
|
Groupe : Membres
|
Merci pour ta reponse. En fait je debute pas mal en C++ (j'ai un peu plus de bases en C) Jímagine que c'est dans le cours ( dsl j'ai pas trouvé le chapitre) mais peux-tu m'expliquer comment est-ce qu'on déclare un tableau de fstream ? et a quoi correspond ton i%5 (i modulo 5 ? dans ce cas il doit y avoir quelque chose qui m'echappe...je ne vois pas le lien...)
Merci encore pour ta reponse !
|
 Groupe : Membres
|
tableau de fstream = tableau comme tout les autres (cf tuto). ou std::vector.
si tu fait une boucle, tu incrémente i/k/z à chaque tour. Tu utilises i/k/z pour accéder à l'élément du tableau avec [].
|
Groupe : Membres
|
Fais une petite boucle sur .. aller, 20 éléments, et affiche le modulo 5 de i.
Tu devrais voir le rapport avec un tableau de 5 éléments assez vite.
@ hiura, il peut y avoir des effets de bords avec les vecteurs de fstream qui font que je le laisse avec les tableaux pour l'instant -- push_back ne marchera pas.
|
Groupe : Membres
|
Vous me dites que un tbl de fstream est un tbl comme les autres donc j'ai déclaré mon tableau de cette facon fstream write[4] et ensuite j'ai defini tous les elements de mon tableau de la facon write[1]("case1.dat", ios::out); etc etc et enfin write[k]<<a[i][0]<<endl; dans ma boucle
Bon il y a une grossiere erreur j'imagine ;-) quelqu'un pour me mettre sur la piste ?
Merci beaucoup
Édité
le 03/07/2008 à 17:45:01
par EIJO
|
Groupe : Membres
|
"write[1].open(...)"
La construction a déjà eu lieu.
|
 Groupe : Membres
|
Citation : lmghs@ hiura, il peut y avoir des effets de bords avec les vecteurs de fstream qui font que je le laisse avec les tableaux pour l'instant -- push_back ne marchera pas. Je devrais réfléchir plus....
|
Groupe : Membres
|
OK !! Merci a tous pour votre aide...ca fonctionne !!
|
Groupe : Membres
|
@hiura. Le truc, c'est que j'ai hésité. Mais je ne voulais pas rentrer dans les détails des constructions qui dimensionnent la taille, ou des push_back ... de pointeurs.
Tout dépend s'il y a toujours 5 fichiers, ou s'il peut y en avoir un nombre inconnu lors de la compilation, ou si ce nombre peut varier.
|
 Groupe : Membres
|
Oui, mais ça complique pas mal les choses quand on débute, donc c'est pas forcement bien. (Ce que à quoi tu as pensé et pas moi  .)
|