[C] Fusionner deux matrices

Résolu/Fermé
edouard30 Messages postés 5 Date d'inscription jeudi 27 novembre 2008 Statut Membre Dernière intervention 12 décembre 2008 - 27 nov. 2008 à 17:43
edouard30 Messages postés 5 Date d'inscription jeudi 27 novembre 2008 Statut Membre Dernière intervention 12 décembre 2008 - 27 nov. 2008 à 22:31
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.
A voir également:

8 réponses

neogenesis Messages postés 4748 Date d'inscription dimanche 19 octobre 2008 Statut Contributeur Dernière intervention 24 janvier 2010 512
27 nov. 2008 à 17:45
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 68 Date d'inscription lundi 19 mai 2008 Statut Membre Dernière intervention 20 août 2009
27 nov. 2008 à 17:50
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 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
27 nov. 2008 à 17:56
Salut
Oui, tu alloues la bonne taille au tableau, et ensuite tu utilises memcpy ;)
Cdlt
0
edouard30 Messages postés 5 Date d'inscription jeudi 27 novembre 2008 Statut Membre Dernière intervention 12 décembre 2008
27 nov. 2008 à 20:25
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 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
27 nov. 2008 à 21:00
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 jeudi 27 novembre 2008 Statut Membre Dernière intervention 31 janvier 2014 11
27 nov. 2008 à 21:07
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 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
27 nov. 2008 à 21:08
pas besoin de boucle, memcpy existe ;)
0
deglingo592003 Messages postés 77 Date d'inscription jeudi 27 novembre 2008 Statut Membre Dernière intervention 31 janvier 2014 11
27 nov. 2008 à 21:13
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 Date d'inscription jeudi 27 novembre 2008 Statut Membre Dernière intervention 12 décembre 2008
27 nov. 2008 à 22:31
Ok, je vais bosser la-dessus.
Merci à tous
0