Bonjour tous le monde,
svp j'ai besoin de votre aide sur ce petit problème sur code blocks. Je vous remercie d'avance sur tous vos réponses.
voila, j'ai un fichier Excel (.csv), il contient 40 cellules ligne et 20 cellules colonnes. (la 1ere cellule ligne c'est les en-têtes du fichier et les autres sont des doubles).
j'aimerai récupérer ces données dans une matrice 40X20, que j'utiliserai par la suite dans mon projet comme matrice de données.
j'ai fait un petit programme C++ pour lire ce fichier et récupérer la matrice MAIS lors de l'exécution le programme me récupère une matrice 40x20 mais pleine des ZEROS. et M'indique que dataMatrix.exe a cessé de fonctionner sachant que dataMatrix c'est le nom de mon programme.
Merci d'avance pour votre aide
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103 #include <stdlib.h> #include <iostream> #include <fstream> #include <sstream> #include <vector> #include <cstdio> #include <string.h> using namespace std; // OBTAIN THE NUMBER OF LINES OF MY FILE. int matrix_lines(istream &iFile) { iFile.clear(); iFile.seekg(0); int lines = 0; string line; while(!iFile.eof()) { getline (iFile, line); lines++; } cout << "NUMBER OF LINES: " << lines-1 << endl; return lines-1; } // OBTAIN THE NUMBER OF COLS OF MY FILE. int matrix_cols(istream &iFile) { iFile.clear(); iFile.seekg(0); string line; int cols =0; int count =0; getline (iFile, line); char ligne [255]; strcpy (ligne, line.c_str()); for (int i=0; i< strlen (ligne); i++) if (ligne [i] ==';') count++; cols=count+1; cout << "NUMBER OF COLS : " << cols << endl; return cols; } // READ MATRIX vector<vector<double> > matrix_read(istream &iFile, int lines, int cols) { vector<vector<double> > matrix; matrix.resize(cols); for(int i = 0; i < cols; i++) matrix[i].resize(lines); double value; iFile.clear(); iFile.seekg(0); string line; for(int i = 0; i < lines; i++) { for(int j = 0; j < cols; j++) { matrix[i][j] = (iFile>>value,value); cout << matrix[i][j] << " "; } cout << "\n" << endl; } return matrix; } int main() { int lines,cols; ifstream iFile; iFile.open("C:/Users/Desktop/data.csv"); if(!iFile) { // FILE COULDN'T BE OPENED cerr << "Error: FILE COULD NOT BE OPENED" << endl; exit(1); } cols = matrix_cols(iFile); lines = matrix_lines(iFile); // vector<vector<double> > matrix; // matrix.resize(cols); // for(int i = 0; i < cols; i++) // matrix[i].resize(lines); matrix_read(iFile, lines, cols); iFile.close(); return (EXIT_SUCCESS); }
Partager