Appel d'une matrice dans une fonction
lejeune
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour, je veux calculer la somme de deux matrices mais sous forme de fonctions mais mon programme bogue au niveau de l'appel. Quelcun pourrait il maider à trouver où se trouve le problème?merci
#include<stdio.h>
#include<conio.h>
#define N_MAX 10
#define M_MAX 10
void somme (int A[][M_MAX],int B[][M_MAX]);
int main()
{
int n,m,i,j,A[N_MAX ][M_MAX ],B[N_MAX ][M_MAX ];
printf("Donnez les dimensions des matrices\n");
scanf("%d%d",&n,&m);
printf("Remplir la matrice A\n");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",&A[i][j]);
printf("Remplir la matrice B\n");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",&B[i][j]);
somme (A,B);
return 0;
getch();
}
void somme (int A[][M_MAX],int B[][M_MAX])
{
int n,m;
int som[n][m], i,j;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
som[i][j]=A[i][j]+B[i][j];
for(i=0;i<n;i++)
{
printf("|");
for(j=0;j<m;j++)
printf("%d",som[i][j]);
printf("|\n");
}
}
#include<stdio.h>
#include<conio.h>
#define N_MAX 10
#define M_MAX 10
void somme (int A[][M_MAX],int B[][M_MAX]);
int main()
{
int n,m,i,j,A[N_MAX ][M_MAX ],B[N_MAX ][M_MAX ];
printf("Donnez les dimensions des matrices\n");
scanf("%d%d",&n,&m);
printf("Remplir la matrice A\n");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",&A[i][j]);
printf("Remplir la matrice B\n");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",&B[i][j]);
somme (A,B);
return 0;
getch();
}
void somme (int A[][M_MAX],int B[][M_MAX])
{
int n,m;
int som[n][m], i,j;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
som[i][j]=A[i][j]+B[i][j];
for(i=0;i<n;i++)
{
printf("|");
for(j=0;j<m;j++)
printf("%d",som[i][j]);
printf("|\n");
}
}
A voir également:
- Appel d'une matrice dans une fonction
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Fonction si et - Guide
- Appel privé - Guide
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
- Prix d'un appel local - Forum telephonie fixe
5 réponses
c bon il y a des erreurs indétectables au premier regard
on commence par la fonction somme
voici ta version
# il faut corriger l prototype comme je l'ai dit auparavant.
# la ligne du code
on la remplace par
car on ne put pas déclarer un tableau a taille variable, mais on peut le créer grâce a l'allocation dynamique
notez que "N_MAX" et "M_MAX" ne sont pas des variables
# quand vous faite
a l'intérieur de la fonction somme les variable n et m sont déclarée mais il n'ont aucune valeur , il faut donc penser au passage des valeurs des dimension du tableau
alors on change le prototype de la fonction somme comme suite
DANS LE MAIN()
#quand vous faite
vous arrêter la fonction main() par l'instruction "return 0"
et le "getch()" ne s'execute pas
#question affichage de la matrice
au lieu de faire
fait plutot :
espace les %d sinon tout les éléments de la ligne de cette matrice apparaissent comme un seul nombre
___________________________________________________
enfin voici ton programme après ces modifications :
_____________________________________________________
DÉSOLÉ POUR LE RETARD JE CROYAIS QUE LE SUJET ÉTÉ DÉJÀ RÉSOLU PAR MA PREMIÈRE INTERVENTION
on commence par la fonction somme
voici ta version
void somme (int A[][M_MAX],int B[][M_MAX])
{
int n,m;
int som[n][m], i,j;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
som[i][j]=A[i][j]+B[i][j];
for(i=0;i<n;i++)
{
printf("|");
for(j=0;j<m;j++)
printf("%d",som[i][j]);
printf("|\n");
}
}
# il faut corriger l prototype comme je l'ai dit auparavant.
# la ligne du code
int som[n][m], i,j;est fausse
on la remplace par
int som[N_MAX][M_MAX], i,j;
car on ne put pas déclarer un tableau a taille variable, mais on peut le créer grâce a l'allocation dynamique
notez que "N_MAX" et "M_MAX" ne sont pas des variables
# quand vous faite
for(i=0;i<n;i++) for(j=0;j<m;j++)
a l'intérieur de la fonction somme les variable n et m sont déclarée mais il n'ont aucune valeur , il faut donc penser au passage des valeurs des dimension du tableau
alors on change le prototype de la fonction somme comme suite
void somme (int A[N_MAX][M_MAX],int B[N_MAX][M_MAX], int n ,int m);
DANS LE MAIN()
#quand vous faite
return 0; getch();
vous arrêter la fonction main() par l'instruction "return 0"
et le "getch()" ne s'execute pas
#question affichage de la matrice
au lieu de faire
printf("%d",som[i][j]);
fait plutot :
printf(" %d ",som[i][j]);
espace les %d sinon tout les éléments de la ligne de cette matrice apparaissent comme un seul nombre
___________________________________________________
enfin voici ton programme après ces modifications :
#include<stdio.h>
#include<conio.h>
#define N_MAX 10
#define M_MAX 10
void somme (int A[N_MAX][M_MAX],int B[N_MAX][M_MAX], int n ,int m);
int main()
{
int n,m,i,j,A[N_MAX ][M_MAX ],B[N_MAX ][M_MAX ];
printf("Donnez les dimensions des matrices\n");
scanf("%d%d",&n,&m);
printf("Remplir la matrice A\n");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",&A[i][j]);
printf("Remplir la matrice B\n");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",&B[i][j]);
somme (A,B,n,m);
getch();
return 0;
}
void somme (int A[N_MAX][M_MAX],int B[N_MAX][M_MAX],int n ,int m)
{
int som[N_MAX][M_MAX],i,j;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
som[i][j]=A[i][j]+B[i][j];
for(i=0;i<n;i++)
{
printf("|");
for(j=0;j<m;j++)
printf(" %d ",som[i][j]);
printf("|\n");
}
}
_____________________________________________________
DÉSOLÉ POUR LE RETARD JE CROYAIS QUE LE SUJET ÉTÉ DÉJÀ RÉSOLU PAR MA PREMIÈRE INTERVENTION
l'erreur est dans le prototype de la fonction somme :
void somme (int A[N_MAX][M_MAX],int B[N_MAX][M_MAX]);
et non pas
void somme (int A[][M_MAX],int B[][M_MAX]);
(avant le main() ,et après car cette erreur est commise 2 fois )
void somme (int A[N_MAX][M_MAX],int B[N_MAX][M_MAX]);
et non pas
void somme (int A[][M_MAX],int B[][M_MAX]);
(avant le main() ,et après car cette erreur est commise 2 fois )
c fait mais jai toujours le meme probleme ça bogue à lappel
void somme (int A[N_MAX ][M_MAX],int B[N_MAX ][M_MAX]);
au début et à la fin comme tu l'as di
merci
void somme (int A[N_MAX ][M_MAX],int B[N_MAX ][M_MAX]);
au début et à la fin comme tu l'as di
merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question