Bonjour a tous,
Je suis débutante en C++ et je trouve des problèmes pour manipuler un fichier de données.
J'ai un fichier qui contient des données de la forme :
Ces différentes valeurs doivent être classés dans des variables différentes. Par exemple à partir de la ligne 3 jusqu'à la fin (pour des fichiers de tailles plus grande également) je dois lire ces lignes une a une et stocker la première valeur de chaque ligne dans un tableau Dactiv[i] et pour le reste je dois les classer dans une matrice que je déclare en tant que vector <vector <int> > (notons que le tableau possède n lignes mais le nombre de colonnes pour chaque ligne est différent). Est ce que c'est possible de le faire en C++?2 3 10 10 10 0 3 2 3 7 2 2 6 4
J'ai fait un bout de code en C++ mais qui me donne des valeurs erronées stockées dans les variables, le code est le suivant:
Les valeurs des tableaux Dactiv doivent être 0 et 2 celles de NBsucc doivent être 3 et 2. Mais le résultat n'affiche pas les bonnes valeurs?
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 int n; vector <int> NBsucc; vector <int> succ; vector <vector <int> > Successeurs; int R; vector <int> ri; vector <int> Dactiv; //vecteur qui contient la première case de chaque ligne a partir de la ligne 3 filebuf fichier; filebuf *ouvert=fichier.open("Pat5.rcp", ios_base::in); if(!ouvert) { cout<<"Probleme d'ouverture du fichier "<< endl; exit(1); } istream inFile(&fichier); //Lire 1er element de la 1ere ligne du fichier inFile >> n; Dactiv.resize(n); NBsucc.resize(n); //Lire 2eme element de la 1ere ligne du fichier (nombre de ressources) inFile >> R; ri.resize(R); // 2eme ligne for(int j = 0; j < R; j++) inFile >> ri[j]; /* Dans une boucle for de la 3eme ligne jusquà la fin */ for(int k=0; k < n; k++) { // 1ere case de chaque ligne dans le tableau Dactiv inFile >> Dactiv[k]; //2eme case de chaque ligne dans un tableau NBsucc inFile >> NBsucc[k]; //allocation memoire pour la matrice Successeurs Successeurs.resize(n); for(int i = 1; i < NBsucc[k]; i++) Successeurs[i].resize(NBsucc[k],false); //de 3eme case a la fin for(int j = 0; j < NBsucc[k]; j++) inFile >> Successeurs[k][j] ; // les successeurs j de tous les nuds k }
C'est quoi le problème?
Merci
Partager