Bonjour, dans le cadre d'un projet je suis amené à travailler sur des matrices ( double pointeur) que je veux modifier.
Par exemple,
J'ai la matrice matContr suivante:
1 1 0 0 0 0
1 -1 0 0 0 127
1 0 1 0 0 0
1 0 -1 0 0 63
1 0 0 1 0 0
1 0 0 -1 0 0
1 0 0 0 1 0
1 0 0 0 -1 0
Nombre de ligne = NC et nombre de colonne = ND.
Sur cette matrice, je garde toujours la premiere et la dernier colonne et sur les colonnes qui restent, je veux pouvoir en choisir 3 consécutives (indice = colonne de départ -1).
Mon code qui est le suivant :
Jusque là pas de problème, à cette nouvelle matrice , j'aimerais lui rajouter une ligne ( par exemple avec que des 0).
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 int ligne = 0; int colonne = 0 ; int NbRows = NC + 1; for(int i=0;i<NC;i++) { colonne=0; for(int j=0;j<ND;j++) { //On ne prend en compte que les dimensions voulues ainsi que la colonne des constantes if(j==0 || (j>indice && j<(indice+4)) || j>(ND-2) ) { matContr[ligne][colonne]=matContr[i][j]; colonne++; } } ligne++; }
Il faut donc que je réallouer l'espace suffisant ( NC+1 ) mais j'ai une erreur de segmentation que je ne comprend pas.
Voyez vous le problème?
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 matContr = (int**)realloc(matContr, sizeof(int*) * NbRows); for(int i=0;i<NC;i++) { colonne=0; for(int j=0;j<ND;j++) { //On ne prend en compte que les dimensions voulues ainsi que la colonne des constantes if(j==0 || (j>indice && j<(indice+4)) || j>(ND-2) ) { matContr[ligne][colonne]=matContr[i][j]; colonne++; } } ligne++; } //Nouvelle ligne for(int k=0;k<ND:k++) { matContr[NC][k]=0; }
Partager