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

Algorithmes et structures de données Discussion :

Extraction d'éléments d'une matrice


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Imène_23
    Femme Profil pro
    Inscrit en
    Avril 2009
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39

    Informations forums :
    Inscription : Avril 2009
    Messages : 275
    Par défaut Extraction d'éléments d'une matrice
    Bonjour à tous

    je suis en train d'écrire une fonction qui aura par exemple en entrée la matrice X : et en sortie elle me renvoie le vecteur T: donc elle me site les éléments de la matrice.
    j'ai fais ca pour commencer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ini=X(i,j); p=2;  T(1)=X(i,j)
    for i=1 to 3
        for j=1 to 3
            if X(i,j) ≠ ini
                T(p)=X(i,j)
                p=p+1;
                ini=X(i,j)
            end
        end
    end
    cela marche très bien pour les trois premiers éléments mais après ca se répéte
    quelqu'un aurais une idée SVP pour régler ca?

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur R&D en apprentissage statistique
    Inscrit en
    Juin 2009
    Messages
    447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur R&D en apprentissage statistique

    Informations forums :
    Inscription : Juin 2009
    Messages : 447
    Par défaut
    Tu devrais faire un effort de reformulation, car personnellement je ne comprends pas ce qu'il faut faire.

    Que prend ta fonction en entrée et que doit-elle retourner ?

  3. #3
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par Alexis.M Voir le message
    Tu devrais faire un effort de reformulation, car personnellement je ne comprends pas ce qu'il faut faire.

    Que prend ta fonction en entrée et que doit-elle retourner ?
    Vu l'allure du code, je suppose qu'elle doit retourner la liste éléments de la matrice, sans doublons.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  4. #4
    Membre émérite Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Par défaut
    Citation Envoyé par Imène_23 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ini=X(i,j); p=2;  T(1)=X(i,j)
    for i=1 to 3
        for j=1 to 3
            if X(i,j) ≠ ini
                T(p)=X(i,j)
                p=p+1;
                ini=X(i,j)
            end
        end
    end
    1.à quoi sont initialisé i et j ? Peut être que vous vouliez écrire ini=X(1,1). Bien que cela soit aussi faux.
    2.Pourquoi initialiser p à 2, s'il représente l'indice du vecteur de sortie T, vous devriez commencer à partir de la valeur 1, non?
    3. Dans la condition

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if X(i,j) ≠ ini
                T(p)=X(i,j)
                p=p+1;
                ini=X(i,j)
            end
    Vous comparer la valeur de X(i,j) par rapport au dernier élément ajouté dans T et non pas par rapport à l'ensemble des éléments contenus dans T ; par conséquent, vous éviter uniquement d'avoir des doublons successifs dans le vecteur T.

  5. #5
    Membre éclairé Avatar de Imène_23
    Femme Profil pro
    Inscrit en
    Avril 2009
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39

    Informations forums :
    Inscription : Avril 2009
    Messages : 275
    Par défaut
    oui voilà je cherche à retourner la liste d'éléments de la matrice, sans doublons.

    Citation Envoyé par b_reda31 Voir le message
    1.à quoi sont initialisé i et j ? Peut être que vous vouliez écrire ini=X(1,1). Bien que cela soit aussi faux.
    2.Pourquoi initialiser p à 2, s'il représente l'indice du vecteur de sortie T, vous devriez commencer à partir de la valeur 1, non?.
    oui au debut c'est X(1,1) et je le met dans le vecteur, forcement c'est le premier élément (T(1)=X(1,1)=1); après je compare avec les autre éléments de la matrice si c'est différent, je l'ajoute au vecteur donc il sera forcement dans T(2) d'où le p=2... et je continue en incrementant le p;
    Mon soucis est maintenant que ca se répéte..
    j'espère que j'été plus claire.

  6. #6
    Membre émérite
    Homme Profil pro
    Ingénieur R&D en apprentissage statistique
    Inscrit en
    Juin 2009
    Messages
    447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur R&D en apprentissage statistique

    Informations forums :
    Inscription : Juin 2009
    Messages : 447
    Par défaut
    De quel langage s'agit-t-il ?
    Existe-t-il une notion de liste dans ce langage ?
    As-tu des contraintes connus sur les éléments qui peuvent apparaître dans la matrice.

    Dans tous les cas ils manque dans ton code un parcours de la liste déjà existante pour savoir si elle contient ou non l'élément courant.

    Si tu possèdes une structure de liste, le pseudo code s'écrirait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    T = liste_vide()
    for i=1 to nrows(X)
       for j=1 to ncol(X):
           if not contains(T,X(i,j)) 
                append(T,X(i,j))
           endif
       endfor
    endfor

    Si tu dois impérativement t'en sortir avec un tableau et que tu ne connais pas à l'avance quels sont les éléments que ta matrice doit contenir tu dois parcourir a chaque fois ton tableau pour t'assurer que l'élément courant n'est pas présent:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    T(1) = X(1,1); p = 1
    for i = 1 to 3
       for j = 1 to 3 
          e = X(i,j)
          present = False
          for k = 1 to p 
             if T(k) == e
                 present = True
                 break
             endif
          if not e :
              p = p+1
              T(p) = e
    Pour des matrices 3x3 c'est acceptable, avec plus d'éléments il faudrait commencer a songer a des stratégie de recherche plus évoluées.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 5
    Par défaut
    j'ai ajouté une variable b
    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
    Ini ← x(I;j); p←2; T(1) ←x(i;j);
    pour i←1 à 3 faire
          pour j←1 à 3 faire
              si x(i;j) ≠ ini alors
                 T(p) ←x(x;j);
                  p←p-1;
                 pour b←1 à p faire
                    si T(b) = ini  alors
                         T(b) ← ‘’  ‘’ ;
                   Finsi
                 Finpour
                 P←p+2 ;
                 Ini ← x(i ;j) ;
              Finsi
         Finpour
    Finpour

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 5
    Par défaut correctif à ma précédente publication
    Au lieu de [si T(b) = ini alors] dans le code c'est plutôt
    si T(b) = x(i;j) alors

  9. #9
    Membre régulier
    Inscrit en
    Décembre 2011
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 12
    Par défaut
    C'est quel langage que vous utilisez ici? il faut voir avec le structures des listes et des tableaux du langages utilisé, ça pourrait rendre le calcul plus facile, et plus rapide. Je ne comprends pas très bien votre algorithme, l'idée n'est pas claire mais si on galère déjà avec une matrice 3X3, comment ça va être avec une plus grande matrice?!

  10. #10
    Membre éclairé Avatar de Imène_23
    Femme Profil pro
    Inscrit en
    Avril 2009
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39

    Informations forums :
    Inscription : Avril 2009
    Messages : 275
    Par défaut
    Bonjour à tous

    Merci à chacun de vous d'avoir pris le temps de me répondre. j'ai enfin réussi à le faire, mais le plus drôle dans l'histoire c'est que je travaille avec Matlab et qu'il fallait juste utiliser la fonction

    Merci encore...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 30/12/2007, 18h24
  2. Travail sur les éléments d'une matrice.
    Par Jefeh dans le forum MATLAB
    Réponses: 6
    Dernier message: 12/11/2007, 15h10
  3. Réponses: 15
    Dernier message: 12/04/2007, 15h14
  4. Extraction d'élément d'une matrice
    Par mathilde_b dans le forum MATLAB
    Réponses: 1
    Dernier message: 26/03/2007, 10h03
  5. Plus Grand élément d'une matrice
    Par totoc1001 dans le forum MATLAB
    Réponses: 4
    Dernier message: 21/11/2006, 14h52

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