Appel de fonction

ibnjabal Messages postés 3 Date d'inscription vendredi 10 septembre 2010 Statut Membre Dernière intervention 12 septembre 2010 - 10 sept. 2010 à 23:24
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013 - 13 sept. 2010 à 15:44
Bonjour j'essaie de faire une fonction qui calcule la somme de deux matrice et ça fonctionne bien mais seulement c'est quand j'essaie de le faire dans une fonction que jappelle dans un main je n'y arrive vraiment pas je ne sais pas ou setrouve mon probleme.Quelcun pourrait il m'aider? Voici le code et en commentaire ce qui marche.merci

#include<stdio.h>
#include<conio.h>
#define N_MAX 10
#define M_MAX 10


/*main()
{
int n,m,som[N_MAX ][M_MAX ],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]);
printf("Voici le resultat\n");
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");
}
getch();
}
*/


void somme (int A[][],int B[][]);
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[n][m],B[n][m]);
return 0;
getch();
}

void somme (int A[][],int B[][])
{

int som[n][m]=0,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");
}
}

5 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
11 sept. 2010 à 02:09
void somme(int A[][TAILLE],int B[][TAILLE])

Sans TAILLE, le compilo génère nimporte quoi. Comment veux-tu qu'il sache l'adresse de la prochaine ligne ???

ciao...
BruNews, MVP VC++
0
ibnjabal Messages postés 3 Date d'inscription vendredi 10 septembre 2010 Statut Membre Dernière intervention 12 septembre 2010
11 sept. 2010 à 14:45
j'ai essayer mais ça ne marche toujours pas ça fonctionne jusqu'à lappel et c'est à ce niveau que ça bogue.merci bcp


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");
}
}
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
11 sept. 2010 à 22:51
int n,m;

int som[n][m], i,j;
for(i=0;i<n;i++)

n N'EEST PAS INITIALISE.
Si ton compilo ne hurle pas en pareil cas, il convient d'en changer illico.

ciao...
BruNews, MVP VC++
0
ibnjabal Messages postés 3 Date d'inscription vendredi 10 septembre 2010 Statut Membre Dernière intervention 12 septembre 2010
12 sept. 2010 à 01:06
Si j'initialise n ou n et m ,celà n'aura pas de sens à mon avis car je veux que l'utilisateur entre lui meme les dimensions de la matrice.
0

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

Posez votre question
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
13 sept. 2010 à 15:44
Salut,

A ce moment passe par l'utilisation de pointeur.
Tu fera une allocation dynamique : malloc, free.

Shell
0
Rejoignez-nous