slt
j'ai un probleme avec mon programme C++
en fin je veut recuper les valeurs d'une matrice de grande taille et le ranger dans un tableau de trois valeur; tabligne, tabcolonne,tabvaleur, j'arrive que a avoir l'affcihage de la matrice , mais j n'arrive pas a recuperer les tableaux.


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

// chargeurFichier.cpp : Defines the entry point for the console application.
 
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "conio.h"
#define MAXSTR 11500
#define MAXINT 50000
#define MAXINT20000 30000
 
char** split( char* str, char c1,char c2,char c3,char c4, char c5 )//compte le nombre d'element d'un tableau
{
int i=0;
char* tmp[ MAXSTR ] ; /* 11500 colonnes max */
int current = 0;
tmp[current++] = str; 
 
while( *str ) 
{
if ( *str == c1 || *str == c2|| *str == c3|| *str == c4|| *str == c5) 
{ i++;
*str = '\0';
tmp[current++] = str+1; /* on devrait vérifier si on dépasse pas 11500 */
} 
 
++str;
}
tmp[ current ] = '\0';
for(int j=0;j<i;j++){
printf("%s ",tmp[j]);
 
}
 
printf("\n------------------------------------\n");
 
return tmp;
}
 
int main(int argc, char* argv[])
{
 
char tmpChar[MAXSTR];
char **chrsplitResultat;
int tabvaleur[MAXINT];
int tabColonne[MAXINT];
int tabNbParLigne[MAXINT20000];
int tabLigneViable[MAXINT20000];
int i=0;
int nbElEmTraite=0;
 
FILE *fich = fopen("matrice1.txt","r+t");
if (fich== NULL) 
{
fprintf(stderr,"Erreur dans l'ouverture du fichier");
exit(-1);
}
else
{
int j=0;
int boolFich=(fread(tmpChar,sizeof( char ), MAXSTR, fich ));
int nbrElem=0;
 
while(boolFich>0)
{ 
 
chrsplitResultat=split( tmpChar, ':' ,',','(',')','\t' );
nbrElem=atoi(chrsplitResultat[0]);
 
printf("\n------nombre de d'element de la ligne-----------\n");
tabNbParLigne[nbrElem]=(int)strlen(*chrsplitResultat)/2;//nombre d'élémént de la ligne

printf("\n---------mumero de ligne----\n"); 
tabLigneViable[j]=atoi(*chrsplitResultat); //numero de la ligne 
chrsplitResultat++;
int k=0;
 
while(k<nbrElem && chrsplitResultat!=NULL)
{
 
tabColonne[nbElEmTraite]=atoi(*chrsplitResultat);//colonne
chrsplitResultat++;
tabvaleur[nbElEmTraite]=atoi(*chrsplitResultat);//valeur de la colonne

chrsplitResultat++;
k++;
nbElEmTraite++;
} 
 
boolFich=(fread(tmpChar,sizeof( char ), MAXSTR, fich ));
j++;
}
fclose(fich);
}
return 0;
 
}
0: (1,0) (2,0) (1332,5580) (1499,5002) (1548,5028) (1688,3778) (1814,3912) (1818,3915) (1961,3367)
1: (0,0) (2,0) (1230,2828) (1333,5249) (1497,5361) (1549,5373) (1571,5052) (1686,4171) (1812,4302) (1819,4305) (1868,4551) (1959,3028)
2: (0,0) (1,0) (1334,5847) (1550,4771) (1690,5451) (1820,5681)
3: (4,0) (5,0) (1332,650) (1548,2227)
4: (3,0) (5,0) (1333,356) (1497,2263) (1499,2331) (1549,1924)
5: (3,0) (4,0) (1334,877) (1550,2453)
6: (7,0) (8,0) (280,88) (473,3329) (503,5389) (1108,1438) (1355,5205) (1366,2086) (1404,290) (1405,290) (1406,290) (1434,1481)
7: (6,0) (8,0) (471,2854) (501,5940) (884,5781) (1435,2044) (1436,2172)
8: (6,0) (7,0) (430,4706) (493,3110) (499,5794) (1107,1727) (1120,544) (1297,182) (1365,2390) (1987,785)
9: (10,0) (11,0) (477,3539) (597,2039) (643,4098)
10: (9,0) (11,0) (478,3260) (598,1760)
11: (9,0) (10,0) (479,3761) (599,2261) (642,4321) (1195,872) (1390,558)
12: (13,0) (14,0) (1332,976) (1548,2600)
13: (12,0) (14,0) (1333,678) (1549,2294)
14: (12,0) (13,0) (1334,1216) (1550,2828)
15: (16,0) (17,0) (429,3785) (498,5285) (547,4876) (619,2915) (635,398) (652,5156) (853,3183) (1107,2681) (1154,4440) (1296,1094) (1378,1114) (1540,794)
16: (15,0) (17,0) (430,4086) (499,5586) (633,145) (704,2251) (1108,2379) (1152,4768) (1297,803)
17: (15,0) (16,0) (431,3483) (500,4983) (546,5174) (618,2589) (625,5505) (643,5259) (850,4554) (852,3478) (1109,2988) (1298,1393) (1377,1416) (1420,1922) (1539,1080)
18: (19,0) (20,0) (479,4576) (599,3076) (624,4773) (642,4607) (653,3767) (1195,1461) (1390,1122) (1541,57)
19: (18,0) (20,0) (477,4364) (597,2864) (625,4561) (626,4710) (643,4390) (651,3540) (1121,104)
20: (18,0) (19,0) (644,4580) (1194,1420) (1389,1082) (1391,1369)
21: (22,0) (23,0) (429,3785) (498,5285) (547,4876) (619,2615) (635,398) (652,5156) (853,3183) (1107,2681) (1154,4140) (1296,1094) (1378,1114) (1540,794)
22: (21,0) (23,0) (430,4086) (499,5586) (633,145) (704,1951) (1108,2379) (1152,4468) (1297,803)
23: (21,0) (22,0) (431,3483) (500,4983) (546,5174) (618,2289) (625,5505) (643,5259) (850,4254) (852,3478) (1109,2988) (1298,1393) (1377,1416) (1420,1922) (1539,1080)
24: (25,0) (26,0) (1687,989) (1813,867) (1818,942) (1820,942) (1866,637) (1868,749)
25: (24,0) (26,0) (1867,566)
26: (24,0) (25,0) (1686,1278) (1812,1154) (1814,1205) (1819,1123)
27: (28,0) (29,0) (624,4953) (642,4725) (653,4574) (854,2249) (1195,1833) (1379,176) (1390,1497) (1419,5583) (1541,430)
28: (27,0) (29,0) (625,4736) (643,4519) (651,4351) (852,2020) (1298,74) (1420,5353) (1539,227) (1931,5827)
29: (27,0) (28,0) (626,4912) (644,4685) (1194,1792) (1389,1457) (1391,1763) (1421,5582)
30: (31,0) (32,0)
31: (30,0) (32,0)
32: (30,0) (31,0)
33: (34,0) (35,0) (1332,976) (1548,2600)
34: (33,0) (35,0) (1333,678) (1549,2294)
35: (33,0) (34,0) (1334,1216) (1550,2828)
36: (37,0) (38,0) (1497,2534) (1498,2470) (1499,2598)
37: (36,0) (38,0) (1542,3082)
38: (36,0) (37,0) (1333,678) (1549,2294)
39: (40,0) (41,0) (1332,650) (1548,2227)
40: (39,0) (41,0) (1333,356) (1497,2263) (1499,2331) (1549,1924)

Balises code rajoutées par Miles, pensez-y !