Passer un tableau 2D en paramètre et retourner une somme

Résolu
lionpri Messages postés 3 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 8 juin 2009 - 8 juin 2009 à 18:57
Pistol_Pete Messages postés 1054 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 - 9 juin 2009 à 08:31
Bonjour,

Je suis débutant en C et j'ai du mal à comprendre les déclarations de fonction. J'aimerais passer un tableau 2D en paramètre d'une fonction et retourner la somme des composants dans mon programme principal. Voici ce que j'ai écrit.

#include <stdlib.h>
#include <stdio.h>

// passe en constante, 2 lignes, 2 colonnes
#define NBCOL 2
#define NBLIG 2

//prototype fonction. Que dois-je déclarer, le tableau en entré ou la valeur en sortie?
int sommetab (tab[NBLIG][NBCOL]);

void main (){

    int a, i, j, resultat;
    int tabelle [NBLIG][NBCOL];

    a=1;

    for (i=0 ; i<NBLIG ; i++){
        for (j=0; j<NBCOL ; j++){
            tabelle [i][j] = a;
            a++;
        }
    }
    resultat = sommetab (somme);
    system("pause");
}

int sommetab (tab[NBLIG][NBCOL]){

    int i, j, somme;
   
    for (i=0 ; i<NBLIG ; i++){
        for (j=0; j<NBCOL ; j++){
            somme = somme + tab[i][j];
        }
    }
    return somme;
}

Biensûr ça ne compile pas, mais je ne comprends pas comment déclarer ces variables, si quelqu'un pouvait corriger ce code et m'expliquer, je lui en serai très reconnaissant.

4 réponses

Pistol_Pete Messages postés 1054 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
9 juin 2009 à 08:31
Essaye cela:
J'ai mis en rouge les modifs apporté à ton premier code.

#include <stdlib.h>
#include <stdio.h>

// passe en constante, 2 lignes, 2 colonnes
#define NBCOL 2
#define NBLIG 2

//prototype fonction. Que dois-je déclarer, le tableau en entré ou la valeur en sortie?
int sommetab (int tab[NBLIG][NBCOL]);

void main (){

    int a, i, j, resultat;
    int tabelle [NBLIG][NBCOL];

    a=1;

    for (i=0 ; i<NBLIG ; i++){
        for (j=0; j<NBCOL ; j++){
            tabelle [i][j] = a;
            a++;
        }
    }
    resultat = sommetab (tabelle);
    system("pause");
}

int sommetab (int tab[NBLIG][NBCOL]){

    int i, j, somme=0;
  
    for (i=0 ; i<NBLIG ; i++){
        for (j=0; j<NBCOL ; j++){
            somme = somme + tab[i][j];
        }
    }
    return somme;
}
A+
____________________________________________________________________________
Mon site internet :  
http://ImAnalyse.free.fr
3