IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

tableau 2D dans différents fichiers .c


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Par défaut tableau 2D dans différents fichiers .c
    Bonjour,

    Je travail sur un program ou j utilise une matrise 2D, dont la longueur est fixée en début de programe(mais que j aimerai pouvoir changer en cas de besoin)

    long nx=40;
    long ny=40;
    double matrix[nx][ny] ;

    Mon programme marche, mais j essaye désormais de le séparer en plusieurs sous fichiers .c et .h de façon à le rendre plus lisible, cependant, quand je copie mes fonctions opérant sur mon tableau, en dehors de ma fonction main, comme pour la fonction :

    void generate_matrix(double matrix[nx][ny],long nx,long ny,long *iseed){
    long i,j ;
    for (i=0;i<nx;i++){
    for (j=0;j<ny;j++){
    double rand=ran2(&iseed) ;
    matrix[i][j]=(rand<0.5) ? (matrix[i][j]=-1.) : (matrix[i][j]=1.) ;
    printf("matrix[%d][%d]=%f\n",i,j,matrix[i][j]) ;
    }
    }
    printf("I m going out of generate matrix\n") ;
    }

    Il me dit qu il connait pas nx et ny.
    J aimerai bien trouvé une façon de faire marcher ça sans avoir à redéfinir nx et ny dans chaque sous fichiers .c, ni avoir à changer toute ma structure en redéfinissant ma matrisse sous forme de pointeur.

    Merci d avance.

    Olivier

  2. #2
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    matrise
    non ...

    matrisse
    non plus ...

    Il me dit qu il connait pas nx et ny.
    Ca parait plutôt normal, où sont définies ces variables ?

    Si tu ne veux rien changer, tu peux utiliser des variables globales (je prefère un define en début de fichier .h que tu inclues partout)


  3. #3
    Membre chevronné
    Avatar de karami
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2005
    Messages : 343
    Par défaut
    Il faut faire tes declarations comme ça :
    #define nx 40
    #define ny 40

  4. #4
    Membre régulier
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Par défaut
    Dans mon programme principal, je fais :

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <math.h>
    #define nx 40
    #define ny 40
    #include "ran2.h"
    #include "function.h"
    #include "energy.h"
    #include "matrix.h"


    ben il me répond
    matrix.c:8: error: 'nx' undeclared here (not in a function)
    matrix.c:8: error: 'ny' undeclared here (not in a function)
    matrix.c: In function 'generate_matrix':

    Ou est qu il faut que je définisse x et ny pour qu ils soient pris en compte partout?
    Quel intitulé je dois mettre sur mes fichiers .h ou .c ??
    (J aimerai bien ne pas avoir à définir nx et ny dans chaque sous fichier, pour pouvoir les changer facilement)...


    Merci pour vos réponse en attendant.

    Olivier

  5. #5
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    En général tu peux faire un fichier param.h avec le contenu suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #ifndef _PARAM_H_
    #define _PARAM_H_
     
    #define nx ...
    #define ny ...
     
    #enfif
    et tu inclus ce fichier dans tous les fichiers qui ont besoin de ce paramètre.

  6. #6
    Membre chevronné
    Avatar de karami
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2005
    Messages : 343
    Par défaut
    pour l'extension des fichiers c'est ".h".
    le code que tu as mis existe dans quel fichier?
    l'erreure signalée c'est dans matrix.c, mais je voix pas que c'est à la ligne 8.
    donc je croix que tu utilise tes 2 variables dans "function.h" sans les declarés.

    je te propose de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #define nx 40
    #define ny 40
    dans "function.h".

  7. #7
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    Citation Envoyé par karami
    pour l'extension des fichiers c'est ".h".
    le code que tu as mis existe dans quel fichier?
    l'erreure signalée c'est dans matrix.c, mais je voix pas que c'est à la ligne 8.
    donc je croix que tu utilise tes 2 variables dans "function.h" sans les declarés.

    je te propose de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #define nx 40
    #define ny 40
    dans "function.h".
    Ca fait deux fois que tu reponds la même chose que moi ... Je vais mettre ça sur le compte de la simultanéité des réponses.

    Pour ce qui est de ta solution, elle n'est pas logique puisqu'il n'y a aucune raison pour que les variables soit définies ici, de plus si tu veux rajouter un fichier, cela complique le tout puisque tu dois respecter un ordre pour l'inclusion des fichiers...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2000] formulaire à partir d'une liste dans différent fichiers
    Par Avinetor dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 02/06/2009, 18h51
  2. Réponses: 8
    Dernier message: 13/05/2009, 11h00
  3. [Débutant] accéder à des variables partagées dans différents fichiers
    Par jane40 dans le forum MATLAB
    Réponses: 16
    Dernier message: 24/04/2009, 15h17
  4. export d'un tableau byte dans un fichier excel
    Par JauB dans le forum ASP.NET
    Réponses: 4
    Dernier message: 22/04/2008, 12h36
  5. Réponses: 4
    Dernier message: 10/02/2005, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo