Bsr, j'ai vu un code sur ce blog et voulais le modifier pour fusionner deux matrices d'ordre 4 j'ai tout essayer mais n'affice pas le resultat correctement est ce que quelqu'un peu m'aider s'il vous plait
voici le code
#include <stdio.h>
main()
{
/* Déclarations */
/* Les tableaux et leurs dimensions */
int A[50][50], B[50][50], FUS[100][100];
int N, M;
int IA,JA, IB,JB, IFUS,JFUS; /* indices courants */
/* Saisie des données */
printf("Dimension du tableau A (max.50) : ");
scanf("%d", &N );
printf("Entrer les éléments de A dans l'ordre croissant :\n");
for (IA=0; IA<N; IA++)
for (JA=0; JA<N; JA++)
{
printf("Elément A[%d][%d] : ", IA,JA);
scanf("%d", &A[IA][JA]);
}
printf("Dimension du tableau B (max.50) : ");
scanf("%d", &M );
printf("Entrer les éléments de B dans l'ordre croissant :\n");
for (IB=0; IB<M; IB++)
for (JB=0; JB<M; JB++)
{
printf("Elément B[%d]B[%d] : ",IB,JB);
scanf("%d", &B[IB][JB]);
}
/* Affichage des tableaux A et B */
printf("Tableau A :\n");
for (IA=0; IA<N; IA++){
for (JA=0; JA<M; JA++)
printf("%7d ", A[IA][JA]);
printf("\n");
}
printf("Tableau B :\n");
for (IB=0; IB<M; IB++){
for (JB=0; JB<M; JB++)
printf("%7d ", B[IB][JB]);
printf("\n");
}
/* Fusion des éléments de A et B dans FUS */
/* de façon à ce que FUS soit aussi trié. */
IA=0; IB=0; IFUS=0;
JA=0; JB=0; JFUS=0;
while ((IA<N) && (IB<M))
if(A[IA][JA]<B[IB][JB])
{
FUS[IFUS][JFUS]=A[IA][JA];
IFUS++;
IA++;
JFUS++;
JA++;
}
else
{
FUS[IFUS][JFUS]=B[IB][JB];
IFUS++;
IB++;
JFUS++;
JB++;
}
/* Si IA ou IB sont arrivés à la fin de leur tableau, */
Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention. Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé. Pour plus d'informations, nous vous invitons à lire les règles générales du forum
Merci d'utiliser la mise en forme de code
Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: cpp;">Votre code ici</pre>.
Pas de problème, première chose quand on poste un code on utilise la balise et on le remet en forme pour que ce soit lisible ^^.
#include <stdio.h>
main()
{
/* Déclarations */
/* Les tableaux et leurs dimensions */
int A[50][50], B[50][50], FUS[100][100];
int N, M;
int IA,JA, IB,JB, IFUS,JFUS; /* indices courants */
/* Saisie des données */
printf("Dimension du tableau A (max.50) : ");
scanf("%d", &N );
printf("Entrer les éléments de A dans l'ordre croissant :\n");
for (IA=0; IA<N; IA++)
{
for (JA=0; JA<N; JA++)
{
printf("Elément A[%d][%d] : ", IA,JA);
scanf("%d", &A[IA][JA]);
}
}
printf("Dimension du tableau B (max.50) : ");
scanf("%d", &M );
printf("Entrer les éléments de B dans l'ordre croissant :\n");
for (IB=0; IB<M; IB++)
{
for (JB=0; JB<M; JB++)
{
printf("Elément B[%d]B[%d] : ",IB,JB);
scanf("%d", &B[IB][JB]);
}
}
/* Affichage des tableaux A et B */
printf("Tableau A :\n");
for (IA=0; IA<N; IA++)
{
for (JA=0; JA<M; JA++)
{
printf("%7d ", A[IA][JA]);
}
printf("\n");
}
printf("Tableau B :\n");
for (IB=0; IB<M; IB++)
{
for (JB=0; JB<M; JB++)
{
printf("%7d ", B[IB][JB]);
}
printf("\n");
}
/* Fusion des éléments de A et B dans FUS */
/* de façon à ce que FUS soit aussi trié. */
IA=0; IB=0; IFUS=0;
JA=0; JB=0; JFUS=0;
while ((IA<N) && (IB<M))
{
if(A[IA][JA]<B[IB][JB])
{
FUS[IFUS][JFUS]=A[IA][JA];
IFUS++;
IA++;
JFUS++;
JA++;
}
else
{
FUS[IFUS][JFUS]=B[IB][JB];
IFUS++;
IB++;
JFUS++;
JB++;
}
}
/* Si IA ou IB sont arrivés à la fin de leur tableau, */
/* alors copier le reste de l'autre tableau. */
while (IA<N && JA<N)
{
FUS[IFUS][JFUS]=A[IA][JA];
IFUS++;
IA++;
JFUS++;
JA++;
}
while (IB<M && JB<M)
{
FUS[IFUS][JFUS]=B[IB][JB];
IFUS++;
IB++;
JFUS++;
JB++;
}
/* Edition du résultat */
printf("Tableau FUS :\n");
for (IFUS=0; IFUS<N+M; IFUS++)
{
for (JFUS=0; JFUS<N+M; JFUS++)
{
printf("%4d ", FUS[IFUS][JFUS]);
}
printf("\n");
}
return 0;
}
ensuite que veux tu dire par fusionner deux matrice d'ordre 4 ?
for ( i = 0; i < nbLines; i++ )
{
for ( j = 0; j < nbColonnes; j++ )
{
out[ i ][ j ] = 0;
for ( k = 0; k < nbColonnes; k++ )
{
out[ i ][ j ] += m1[ i ][ k ] * m2[ k ][ i ];
}
}
}
// nbLines : nombre de ligne de la matrice 1
// nbColobbes : nombre de colonnes de la matrice 1
maintenant à toit de faire
la connaissance est une chose qui ne nous appauvrit pas quand on la partage.
Bonsoir, j'ai fini par résoudre le problème de fusionnement de deux matrices
voici le code
#include <stdio.h>
main()
{
/* Déclarations */
/* Les tableaux et leurs dimensions */
int A[50][50], B[50][50], FUS[100][100];
int N, M;
int IA,JA, IB,JB, IFUS,JFUS; /* indices courants */
/* Saisie des données */
printf("Dimension du tableau A (max.50) : ");
scanf("%d", &N );
printf("Entrer les éléments de A dans l'ordre croissant :\n");
for (IA=0; IA<N; IA++)
for (JA=0; JA<N; JA++)
{
printf("Elément A[%d][%d] : ", IA,JA);
scanf("%d", &A[IA][JA]);
}
printf("Dimension du tableau B (max.50) : ");
scanf("%d", &M );
printf("Entrer les éléments de B dans l'ordre croissant :\n");
for (IB=0; IB<M; IB++)
for (JB=0; JB<M; JB++)
{
printf("Elément B[%d]B[%d] : ",IB,JB);
scanf("%d", &B[IB][JB]);
}
/* Affichage des tableaux A et B */
printf("Tableau A :\n");
for (IA=0; IA<N; IA++){
for (JA=0; JA<N; JA++)
printf("%7d ", A[IA][JA]);
printf("\n");
}
printf("Tableau B :\n");
for (IB=0; IB<M; IB++){
for (JB=0; JB<M; JB++)
printf("%7d ", B[IB][JB]);
printf("\n");
}
/* Fusion des éléments de A et B dans FUS */
/* de façon à ce que FUS soit aussi trié. */
//IA=0; IB=0; IFUS=0;
//JA=0; JB=0; JFUS=0;
IFUS=0,JFUS=0;
int i=0,j=0;
for(i=0;i<M;i++){
JFUS=0;
for(j=0;j<M;j++){
FUS[IFUS][JFUS]=A[i][j];
JFUS++;
}
IFUS++;
}
/* Si IA ou IB sont arrivés à la fin de leur tableau, */
/* alors copier le reste de l'autre tableau. */
IFUS=0;
int tempJ=JFUS;
for(i=0;i<N;i++){
JFUS=tempJ;
for(j=0;j<N;j++){
FUS[IFUS][JFUS]=B[i][j];
JFUS++;
}
IFUS++;
}
/* Edition du résultat */
//int CA[M+N][M+N];
printf("Tableau FUS :\n");
for (i=0; i<IFUS; i++){
for (j=0; j<JFUS; j++)
printf("%7d ", FUS[i][j]);
printf("\n");
}
return 0;
}
EDIT: en fait si, à condition que les deux matrices aient la même taille. Mais alors, pourquoi N et M ? Et qu'est-ce qui empêche l'utilisateur d'entrer 4 pour N et 6 pour M ? Auquel cas, ton programme ne fonctionne pas.
- Edité par edgarjacobs 14 juillet 2018 à 0:12:05
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
la connaissance est une chose qui ne nous appauvrit pas quand on la partage.
Mon GitHub
la connaissance est une chose qui ne nous appauvrit pas quand on la partage.
Mon GitHub
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent