[C] Fusionner deux matrices

Résolu
edouard30 Messages postés 5 Statut Membre -  
edouard30 Messages postés 5 Statut Membre -
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.

8 réponses

neogenesis Messages postés 5303 Statut Contributeur 525
 
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é :-)
0
alicia85 Messages postés 75 Statut Membre
 
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
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
Salut
Oui, tu alloues la bonne taille au tableau, et ensuite tu utilises memcpy ;)
Cdlt
0
edouard30 Messages postés 5 Statut Membre
 
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 ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fiddy Messages postés 11653 Statut Contributeur 1 847
 
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
0
deglingo592003 Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   11
 
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
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
pas besoin de boucle, memcpy existe ;)
0
deglingo592003 Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   11
 
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 :)
0
edouard30 Messages postés 5 Statut Membre
 
Ok, je vais bosser la-dessus.
Merci à tous
0