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

C

 > 

Divers

 > 

Débutant(e)

 > 

passage d'un tableau dynamique en parametres


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

passage d'un tableau dynamique en parametres

mardi 20 février 2007 à 03:18:34 | passage d'un tableau dynamique en parametres

Vie2006

Bonjour

Je declare un tableau a deux dimensions dynamique. ensuite,  j'alloue la memoire d'une facon dynamiques.

Sauf que lorsque je passe le tableau en parametres à une autre fonction et lorsque je veux remplire mon tableau, un bogue apparait. voici un exemple de mon code

Void main ()
{  
   float **S;
   int status;

   S = (float *) malloc (4* sizeof(float));
   for (i = 0; i<4; i++)
   {
           S[i] = (float *) malloc ((5)* sizeof(float));
   }
     status = Fontionc (S)

   
}

int Fonction (float **S)
{
      
      S[0][0] = 4; // C'est la ou le bogue apparaite

}
mardi 20 février 2007 à 09:10:20 | Re : passage d'un tableau dynamique en parametres

24Karas

Réponse acceptée !
Surement parce que ta fonction "Fonction" DOIT retourner un int et ne retourne rien, donc ta variable status ne sait pas quoi recupérer ! T'aurais pas un warning à la compilation ? c'est quoi le compilo merdique que tu utilises ?

le code suivant marche bien ici ...

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

int Fonction (float **S)
{
        S[0][0] = 4;
        return 0;         // MANQUE LE RETURN ICI
}


int main (void)
{
        float   **S;
        int     i;
        int status;

        S = (float **) malloc (4* sizeof(float *));            // MANQUE UNE ETOILE DEVANT LE malloc
        for (i = 0; i<4; i++)
        {
                S[i] = (float *) malloc ((5)* sizeof(float));
        }

        status Fonction(S);                     // APPEL DE Fonction ET NON Fonctionc

        fprintf(stderr,"%f\n",S[0][0]);

        return 0;
}

mardi 20 février 2007 à 13:00:11 | Re : passage d'un tableau dynamique en parametres

luhtor

int Fonction (float **S)
{
        S[0][0] = 4;  <= c'est surtout ici que c'est illégal
        return 0;
}

Il connait pas la taille des dimensions, donc tu peux pas passer ton tableau comme ca. Le plus simple c'est de travailler sur un tableau 1D.

mardi 20 février 2007 à 14:43:43 | Re : passage d'un tableau dynamique en parametres

azamharir

salut Vie2006

essai ça :

S = (float**) malloc (4 );
   for (int i = 0; i<4; i++)
        S[i]= (float *) malloc (sizeof(float));
mardi 20 février 2007 à 20:36:47 | Re : passage d'un tableau dynamique en parametres

Matt67

Bonsoir,

Essaie de poster un code qui compile et ensuite on verra les bogues !!!

bertrand@nestor:~/tmp$ gcc -W -Wall main.c
main.c:1: error: erreur de syntaxe before "main"
main.c:2: attention : return type defaults to `int'
main.c: Dans la fonction « main »:
main.c:6: attention : implicit declaration of function `malloc'
main.c:6: attention : affectation d'un type pointeur incompatible
main.c:7: error: `i' undeclared (first use in this function)
main.c:7: error: (Each undeclared identifier is reported only once
main.c:7: error: for each function it appears in.)
main.c:11: attention : implicit declaration of function `Fontionc'
main.c:14: error: erreur de syntaxe before '}' token

Matt...
mardi 20 février 2007 à 22:30:20 | Re : passage d'un tableau dynamique en parametres

azamharir

salut, ton probleme est au niveau de l'allocation de la memoire pour S.
tu proccede ainsi : 
S = (float *) malloc (4* sizeof(float));
 for (i = 0; i<4; i++)
 {
      S[i] = (float *) malloc ((5)* sizeof(float));
  }

ce qui est faux car il s'agit de double pointeur.
donc la solution est :
S = (float**) malloc (4 );
 for (int i = 0; i<4; i++)
       S[i]= (float *) malloc (sizeof(float));

voici un exemple simple de code testé :

#include<stdio.h>
#include<malloc.h>
void fonction(float **S)
{
    for(int i=0;i<4;i++)
        for(int j=0;j<4;j++)
        {
            printf("entrer S[%d][%d] = ",i,j);
            scanf("%f",&S[i][j]);
        }
}

void affiche(float **S)
{
    for(int i=0;i<4;i++)
    {
        for(int j=0;j<4;j++)
            printf("%f\t",S[i][j]);
            printf("\n");
    }
}

void main()
{
    float **S;

    S = (float**) malloc (4 );
    for (int i = 0; i<4; i++)
        S[i]= (float *) malloc (sizeof(float));
    fonction(S);
    affiche(S);
}

   



Cette discussion est classée dans : dynamique, passage, parametres, tableau, float


Répondre à ce message

Sujets en rapport avec ce message

passage de parametres [ par 69lion69 ] Salut, Alors voila mon probleme je programme en C++ sous VS6 et je voudrais faire une fonction qui travaille avec un tableau declaré dans le programme tableau de structure, dynamique ?? [ par mattflyer ] Bonjour à tous..Petite question, je souhaiterai pouvoir déclarer une structure, par exemple;struct recap{      int nb1;      char a;};Puis cr&#2 tableau dynamique a 2 dimensions [ par CausPupus ] Je cherche à créer un tableau dynamiquement au cours de mon application (je ne connais pas ca taille avant d'éxecuter le programme). Donc je sais que Allocation dynamique d'un tableau a deux dimensions [ par Kurul1 ] Bonjour à tousJe voudrais allouer dynamiquement un tableau a deux dimensions d'entiersEst-t-il possible de le faire avec des new au lieu d'utiliser ma Initialisation dynamique d'un tableau [ par tintin72 ] Bonjour, Je cherche à initialiser un tableau de caractères (contenu dans une classe) de façon dynamique.J'ai donc écris le code suivant : class Coord{ [c++] allocation dynamique de tableau [ par anne-lise ] Re bonjour, j'ai encore un probleme avec les tableaux.J'ai une classe Image et je veux construire un tableau d'objet de la classe Image dynamiquement. tableau dynamique [ par azkab ] bonjour,dans mon programme j ai deux classes (classe 'rectangle' et classe 'cercle'). j ai une troisieme classe 'Objet' qui est l aggregation de ces d passage de valeurs à un tableau [ par jfk20004 ] j'ai un bout de prog qui revient systemetiquemet dans la prog graphique:class{float x,y;...}tab[50];for (i...){ tab[i].x=.....} j'aimerais savoir qui [C] Passage de tableau par adresse (réference) [ par nitrique ] Bonjour,Je sais que la question a été posée sous des angles différents mais rien n'y fait.J'aimerais passer mon tableau de char à ma fonction par adre Passage de tableau en paramètre dans une dll [ par makefcna ] Bonjour,Je souhaite passer un tableau de int comme paramètre d'une procedure dans une dll :void mafonction(int* tableau[]){tableau[1]=5tableau[2]=10}J


Nos sponsors


Sondage...

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,562 sec (3)

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