IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

supprimer une ligne et une colonne d'une matrice


Sujet :

C++Builder

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 134
    Points : 65
    Points
    65
    Par défaut supprimer une ligne et une colonne d'une matrice
    salut!!
    comment fair pour supprimer une ligne et une clonne d'une matrice merci

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 481
    Points : 242
    Points
    242
    Par défaut
    Pour être capable de répondre, il faudrait savoir comment la matrice a été écrite.
    Gilbert PASQUALINI

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    voila la declaration
    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
    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;
       }
    merci

  4. #4
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    esque sa marche si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MatSor[i][j].delete(i,j);
    ?

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 374
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 374
    Points : 1 759
    Points
    1 759
    Par défaut
    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 !

  6. #6
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    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 !!

  7. #7
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    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 code
    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
      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 
                }
            //============================
     
    }
    mais 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?
    sinon esqu'ilya un moyen de supprimer directe les cononnes que j'ai identifier?merci

  8. #8
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Points : 83
    Points
    83
    Par défaut
    Bonjour nessing,

    Si c'était à moi de programmer, voici comment je ferai :

    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
     
    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'ai rajouté le n afin de savoir exactement combien de lignes nous avons supprimé.

    J'espère que cela vous aidera.

    A bientôt

  9. #9
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Points : 83
    Points
    83
    Par défaut
    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 .

    Bien cordialement.

    A bientôt

Discussions similaires

  1. [Débutant] Supprimer des lignes et des colonnes d'une matrice
    Par hakimetudiant dans le forum MATLAB
    Réponses: 6
    Dernier message: 01/06/2015, 15h24
  2. Supprimer les lignes et les colonnes d'une image
    Par af.zakaria dans le forum OpenCV
    Réponses: 10
    Dernier message: 22/10/2013, 13h55
  3. Supprimer une ligne via macro à partir d'une colonne donnée
    Par muzele dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/06/2012, 10h47
  4. Réponses: 9
    Dernier message: 17/02/2009, 18h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo