salut!!
comment fair pour supprimer une ligne et une clonne d'une matrice merci
Version imprimable
salut!!
comment fair pour supprimer une ligne et une clonne d'une matrice merci
Pour être capable de répondre, il faudrait savoir comment la matrice a été écrite.
voila la declaration
merciCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 AnsiString **MatSor; //MATRICE D'INCIDENCE sorti try { MatSor = new AnsiString*[NbrRegle]; for (int j = 0; j <NbrRegle; j++) { MatSor[j] = new AnsiString[NbrRegle]; } for (int i = 0; i <NbrFact; i++) { MatSor[i] = new AnsiString[NbrFact]; } } catch(...) { // ça peut arriver ce genre d'erreur, c pr ça qu'il faut gérer ces exception ShowMessage("Erreur lors de l'allocation dynamique de la mémoire pour la matrice de codage"); return; }
esque sa marche si je fais :
?Code:
1
2 MatSor[i][j].delete(i,j);
Salut !
Tout dépend de ce que tu attends du delete, au sens où que devient ta matrice après cette suppression de ligne ou de colonne ?
Est-ce qu'il ne faudrait pas mettre au point une classe spéciale ?
... c'est peut-être idiot ce que je vais dire, mais j'aurais fait ça avec une TList pour les lignes et une TStringList par ligne ...
A plus !
je voudrais juste suprimer uen ligne et la colonne qui lui correspond d'apres une condition !! et le reste de la matrice ne change pas !!
salut!!
j'ai identifier les lignes et les colonnes a suprimer par un "X"
ensuite j'ai fait un teste et une boucle si il trouve le X il sote la colonne sinon il remplasse le contenu de la matrice dans une autre matrice ,voila la codemais le probleme il reprend la matrice en enlevant tout sans le contenus sof la 1ere ligne et les lignes et colonnes augmente malgres qu'ils devraient etre diminuer.ou se trouve l'erreur?Code:
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 String tmp[1000][1000]; int l=0,c=0; int i=1; while (i<m1->RowCount) { int j=1; while (j<m1->ColCount) { if (m1->Cells[j][i]=="X") { j++; if(j==m1->ColCount) { i++; } } if (m1->Cells[j][i]!="X") { tmp[l][c] = m1->Cells[j][i]; c++; j++; } } i++; l++; } //============================ ShowMessage("l= "+IntToStr(l)); ShowMessage("c= "+IntToStr(c)); ShowMessage("4"); m1->RowCount=c+1; m1->ColCount=l+1; for (int u=1;u< m1->ColCount;u++) for (int v=1;v<m1->RowCount;v++) { m1->Cells[v][u]= tmp[u-1][v-1]; //remplire ma matrice } //============================ }
sinon esqu'ilya un moyen de supprimer directe les cononnes que j'ai identifier?merci
Bonjour nessing,
Si c'était à moi de programmer, voici comment je ferai :
J'ai rajouté le n afin de savoir exactement combien de lignes nous avons supprimé.Code:
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 String tmp[1000][1000]; void __fastcall TForm1::Button1Click(TObject *Sender) { int i,j,c,l; int n; n=m1->RowCount; c=-1; for(i=0; i<m1->RowCount; i++) { c=c+1; for (j=0; j<m1->ColCount; j++) if (m1->Cells[j][i]!="x") { l=j; tmp[c][l]=m1->Cells[j][i]; } else { for(int k=0; k<m1->ColCount; k++) tmp[c][k]=""; c=c-1; n=n-1; break; } } for (int v=0; v<m1->RowCount;v++) for (int u=0; u<m1->ColCount;u++) m1->Cells[u][v]= tmp[v][u]; m1->RowCount=n; }
J'espère que cela vous aidera.
A bientôt ;)
Salut nessing,
Je viens de me rendre compte que ce que j'ai posté tout à l'heure ne correspond pas exactement à votre requête. En effet, le code supprime les lignes dans lesquelles se trouvent les "x" alors que vous souhaitez supprimer les lignes et "les colonnes" correspondantes.
Je me remets au boulot et je vous contacte très rapidement :mrgreen:.
Bien cordialement.
A bientôt ;)