begin process at 2012 05 29 15:06:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

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


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

lundi 8 juin 2009 à 18:57:50 | passer un tableau 2D en paramètre et retourner une somme

lionpri

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.
lundi 8 juin 2009 à 19:34:57 | Re : passer un tableau 2D en paramètre et retourner une somme

ident0

quelque chose comme ceci:

#include <stddef.h>
#include <stdio.h>

#define NBCOL    10
#define NBLIG    10

unsigned int somme(const int** tab, size_t x, size_t y);

int main()
{
    size_t a;
    size_t b;
    unsigned int result;
    int tab[NBCOL][NBLIG];

    for (a = 0; a < NBCOL; ++a)
    {
        for (b = 0; b < NBLIG; ++b)
        {
            tab[a][b] = ((a << 5) * b) + 1;
        }
    }

    result = somme(tab, NBCOL, NBLIG);
    printf("somme: %u\n", result);

    return 0;
}

unsigned int somme(const int** tab, size_t x, size_t y)
{
    size_t a;
    size_t b;
    unsigned int result = 0;

    for (a = 0; a < x; ++a)
    {
        for (b = 0; b < y; ++b)
        {
            result += tab[a][b];
        }
    }

    return result;
}

lundi 8 juin 2009 à 19:53:40 | Re : passer un tableau 2D en paramètre et retourner une somme

lionpri

ça ne joue pas, il ne compile pas, il affiche le message suivant

error C2664: 'somme' : cannot convert parameter 1 from 'int [10][10]' to 'const int **'
 Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
lundi 8 juin 2009 à 19:59:35 | Re : passer un tableau 2D en paramètre et retourner une somme

lionpri

J'ai modifié mon programme comme suit :

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

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



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


void main (){

    int a, i, j, resultat, somme;
    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 (int 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;
}



Il m'affiche le message suivant :

c:\documents and settings\lio\mes documents\visual studio 2005\projects\passagetableau\passagetableau.cpp(26) : error C2664: 'sommetab' : cannot convert parameter 1 from 'int' to 'int [][2]'
mardi 9 juin 2009 à 08:31:24 | Re : passer un tableau 2D en paramètre et retourner une somme

Pistol_Pete

Réponse acceptée !
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 :
  
[ Lien ]



Cette discussion est classée dans : int, tableau, somme, nblig, nbcol


Répondre à ce message

Sujets en rapport avec ce message

Blem Somme ELmt d'un Tableau Bidimensionnel [ par Orezza ] Slt c encore moi, le boulet de l'info...c tjrs le meme prog mais cette fois ci j'aimerais afficher la somme des elmts de mon tableaux.#include #includ fonctions sur les tableau [ par micoo86 ] Bonjour,en faite j'ai fait un programme avec le tableau (somme,affichage,minimum,maximum)mais j'arrive pas a faire le rest de l'exercice.si quelqu'un tableau d'entier. [ par gdpasmini ] Hello !j'ai un petit soucis avec une fonction qui renvoi un tableau en parametre... voila les details :Dans mes fonctions : int * boutonDecodFlux(void Problemes ac les tableau [ par alussk ] ce code doit renvoyer la niemes plus grande valeur d'un tableau d'entier. il ne marche pas donc si vous comprenez pourquoi éclairez moi svp #include Pb de tableau et de listbox [ par sran_isback ] Bonjour ! j'ai un ptit probléme concernant un tableau a afficher dans une listbox! j'aimerais bien qu'il m'affiche les nombres de 1 à cents mais toute fonction renvoyant un tableau [ par tomalille ] Bonjour, je dois faire une procedure qui doit renvoyer un tableau. Voici ce que j'ai ecrit: dans le .h int* retournerTableau(void); dans le .cpp int* sequance d alternance paire et impaire ds un tableau [ par Strick9 ] Bonjour à tousvoila je suis débutant et j'aimerai bien connaître la solution de cet énoncé. Soit un tableau d'entier. Une séquence paire est Remplir un tableau avec des valeurs aléatoires(pour mastermind) [ par rammstein596 ] Bonsoir!!Je dois faire un mastermind en C avec Dev-C++ en cours,mais je suis bloqué a une étape,c'est pour remplir un tableau avec des valeurs aléatoi voici mon code [ par Miss1 ] voici mon code mais je n'arrive pas a compiler class tableau { private: int taille; // variables// int *pointeur erreur dans la classe [ par Miss1 ] je n'arrive pas a compiler. le sujet est de crée une taille, un pointeur sur le 1er element du tableau, un constructeur, un constructeur par recopie ,


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales