[C] Fusionner deux matrices

Résolu
Bonjour à tous,

Je débute et je cherche à mettre deux matrices bout à bout, comme par exemple :

a b c d e f g h
i j k l m n o p

a b c d e f g h
i j k l m n o p

J'arrive à rien. Pourriez-vous me mettre sur une piste ?
Merci d'avance.
Configuration: Windows XP
Firefox 3.0.4

8 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Hello pour cela crée une matrice vide de dimension m x 2n avec

    m = nombre de lignes des deux matrices
    n = nombre de colonnes des deux matrices

    Donc tu auras une matrice vide de même nombre de lignes mais 2 fois plus de colonnes

    Ensuite tu parcours tes deux matrices par lignes, et tu recopies les données dans la matrice vide
    C'est pas plus compliqué :-)
    1. soit m le nombre de ligne de tes 2 matrices chacune et n le nombres de collones des 2 chacune creer une matrice de m ligne et 2n colonne je crois qu avec ton exemple ca peut donner ceci
      a b c d e f g h a b c d e f g h
      i j k l m n o p i j k l m n o p
      je crois hein
      1. Contributeur
        Salut
        Oui, tu alloues la bonne taille au tableau, et ensuite tu utilises memcpy ;)
        Cdlt
        1. Merci pour vos réponses,

          Je n'arrive qu'à additionner mais pas à fusionner.
          Exemple :
          1 2 3
          4 5 6

          7 8
          9 10

          fait :
          8 10 3
          13 15 6

          et non :
          1 2 3 7 8
          4 5 6 9 10

          Comment fait-on cela ?
          1. Contributeur
            Salut,
            Comme dit plus haut, tu fais avec memcpy.
            Par exemple :
            int mat[2][5]={{1,2,3,4,5},{6,7,8,9,10}};
            int mat2[2][5]={{1,2,3,4,5},{6,7,8,9,10}};
            int mat3[2][10];
            
            memcpy(mat3,mat,sizeof mat));
            memcpy(mat3+1,mat2,sizeof mat2));
            

            Cdlt
            1. comme il a été dit plus haut

              tu crée une matrice de taille

              ligne = nombre de ligne de M (ou de N car elles ont le même nombre de lignes)

              collone = nombre de colonne M + nombre de colonne N

              tu a ta matrice vide avec le nombre exacte de ligne et de colonne

              ensuite tu réalise une première boucle qui parcoure la première ligne de ta matrice M et la recopie dans ta 3emme matrice avec un test quand tu a finie d'écrire la derniere valeur de la matrice M pour qu'ensuite tu réalise une seconde boucle qui réalise la même chose pour la matrice N

              comme cela premiere ligne de ta matrice 3 contient la premiere ligne de matrice M puis premiere ligne de matrice N

              puis ces deux boucle sont incluse dans une troisieme qui s'éffectue pour le nombre de ligne que tu à dans tes matrice

              en gros

              Matrice M

              abc
              def

              Matrice N

              ghi
              jkl

              matrice 3

              abcghi
              defjkl

              le traitement ne sera pas le plus performant possible mais sa permet de se débloquer pour le moment ( a savoir que sa doit etre réalisable avec uniquement deux boucles
              1. Contributeur
                pas besoin de boucle, memcpy existe ;)
            2. ne connaissant pas memcpy j'avait imaginer une autre solution étant donner qu'il n'arrivais pas à s'en sortir mais j'aurait apprit une chose pour la prochaine fois :)

              pq poster mon commentaire avant de voir le tient voila le pourquoi de ma réponse :)