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.
0: (1,0) (2,0) (1332,5580) (1499,5002) (1548,5028) (1688,3778) (1814,3912) (1818,3915) (1961,3367)
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; }
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 !
Partager