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 :
2 3
10 10 10
0 3 2 3 7
2 2 6 4
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++?
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:
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
} |
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?
C'est quoi le problème?
Merci
Partager