Comment passer un tableau multi-dimensionnel pour fonctionner?

J’essaie de passer un tableau 2D de taille variable à une fonction pour l’imprimer.Mais le code ne montre pas le résultat exact de sum.

c’est le code:

#include  #define ROW 5 #define COLL 5 void print_arr(int a[][COLL],int m,int n){ int i,j,sum; for(i=0;i<m;i++){ for(j=0;j<n;j++){ printf("a[%d][%d]=%d\n",i,j,a[i][j]); } } } int sum_arr(int a[][COLL],int m,int n){ int i,j,sum; for(i=0;i<m;i++){ for(j=0;j<n;j++){ sum+=a[i][j]; } } return sum; } int main (void){ int a[ROW][COLL]; int i,j,m,n; int sum; printf("enter rows:");scanf("%d",&m); printf("enter coll:");scanf("%d",&n); for(i=0;i<m;i++){ for(j=0;j<n;j++){ printf("a[%d][%d]=",i,j);scanf("%d",&a[i][j]); } } print_arr(a,m,n); printf("\n"); sum=sum_arr(a,m,n); printf("sum=%d\n",sum); return 0; } 

c’est le résultat du code

 enter rows:2 enter coll:3 a[0][0]=5 a[0][1]=8 a[0][2]=4 a[1][0]=7 a[1][1]=9 a[1][2]=6 a[0][0]=5 a[0][1]=8 a[0][2]=4 a[1][0]=7 a[1][1]=9 a[1][2]=6 sum=-1217388517 

dites-moi s’il vous plaît ce qui ne va pas avec le code ….

Vous devez transmettre la taille exacte de la deuxième dimension du tableau à la fonction, pas à COLL . changez-le en m (ou n , peu importe) Il passe le nombre 5 à la fonction, alors que le nombre doit être 3 🙂 Cependant, ce n’est pas la raison principale pour laquelle votre code ne fonctionne pas, c’est juste une suggestion. Initialise la sum variable. Cela fera fonctionner votre code. par exemple sum = 0; Si vous ne l’initialisez pas, vous n’obtiendrez pas d’erreurs de compilation, mais il pointe vers un emplacement de mémoire et lit ce qui y était auparavant (valeur non valide) et l’utilise comme sum initiale. Donc, votre tableau est ajouté à un montant non valide, c’est pourquoi votre code ne fonctionne pas.

Il n’y a pas de problème technique à passer, mais dans sum_arr,
votre sum variable ne commence pas à 0 (mais une valeur étrange).

Vous devez initialiser la sum à zero dans la fonction sum_arr .