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 :

Appel d'une structure dans une méthode


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Août 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 9
    Par défaut Appel d'une structure dans une méthode
    Bonjour,
    Je débute en C. Je veux déclarer un tableau qui se remplie aléatoirement jusqu'à atteindre une demande fixe, dans l'exemple (demande=50)

    Ce que je veux faire c'est de mettre une contrainte sur chaque case pour que la valeur affecté aléatoirement doit être entre 0 et un max dans l'exemple (0, (tableau[j].capacite_max).

    Voici un code qui tourne chez moi pour un tableau de 4 cases qui correspondent à (4 fournisseurs dans mon problème).

    Cependant, lorsque je retire les commentaire dans le main pour mettre une condition sur chaque case ça ne marche pas. Je pense que j'ai fait une erreur lors de l'appelle de la procédure. Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    #include <math.h>
    #include <time.h>
    #include <stdbool.h>
     
    #define nbre_fournisseurs 4
    #define demande 50
    #define randomize() srand((unsigned)time(NULL))
     
    int main()
    {
        /*tableau[0].capacite_max = 10;
        tableau[1].capacite_max = 20;
        tableau[2].capacite_max = 30;
        tableau[3].capacite_max = 40;*/
        initialise_population();
    }
     
    typedef struct fournisseurs fournisseurs;
    struct fournisseurs
    {
        int capacite_max;
    };
     
    fournisseurs tableau[nbre_fournisseurs];
     
    /*
    ******************************************
    * initialise_population *
    * Creates and initialize a population *
    ******************************************
    */
     
    initialise_population()
    {
        randomize();
        int myrand(int min, int max)
        {
            return rand()%(min-max+1)+min;
        }
     
        int  j;
        int pos;
        int s=0;
        int tableau[nbre_fournisseurs];
     
        while (s!= demande)
        {
            for ( j = 0 ; j < nbre_fournisseurs ; j++)
                tableau [j] = 0;
            s = 0;
            for ( j = 0 ; j < nbre_fournisseurs ; j++ )
            {
                pos = myrand(0, nbre_fournisseurs);
     
                if (tableau[pos] == 0)
                {
                    if ( s == demande )
                        tableau[j] = 0;
                    else
                    {
                        if ( tableau[j] <=  demande - s )
                        {
                            // tableau[j] = myrand(0, (tableau[j].capacite_max));
                            tableau[j] = myrand(0, 40);
                        }
                        else
                        {
                            tableau[j] = myrand(0, (demande - s));
                        }
                    }
     
                    s+= tableau[j] ;
                }
            }
        }
     
     
    //Affichage de ses valeurs pour vérifier
        for (j = 0 ; j < nbre_fournisseurs ; j++)
        {
            printf("%d\n", tableau[j]);
        }
        {
            printf("\n");
        }
    }

  2. #2
    Membre très actif

    Femme Profil pro
    Collégien
    Inscrit en
    Juillet 2010
    Messages
    591
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Juillet 2010
    Messages : 591
    Par défaut
    Bonjour,

    Commençons par rajouter les options de compilation -Wall -Wextra -Werror -pedantic.

    Car en C standard ce code ne doit même pas compiler....

  3. #3
    Membre habitué
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Août 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 9
    Par défaut
    Je comprends pas très bien ce que tu dis mais le code il compile chez moi.

  4. #4
    Membre Expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Par défaut
    Baah... il devrait pas...

    Donc compile avec les options que mith06 t'a dit et tu auras une mauvaise surprise qui te mettra très TRES probablement sur la bonne voie !
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  5. #5
    Membre habitué
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Août 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 9
    Par défaut
    Est ce que vous pouvez m'expliquer ces options ? Comme j'ai dit au début, je viens de débuter en c. Si ce forum est pour les experts merci de m'indiquer un endroit où on peut répondre à des questions "simplistes"

  6. #6
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Aoutch !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    ||=== C, Debug ===|
    D:\Users\pgradot\Documents\C\dvpez.c||In function 'main':|
    D:\Users\pgradot\Documents\C\dvpez.c|15|warning: implicit declaration of function 'initialise_population' [-Wimplicit-function-declaration]|
    D:\Users\pgradot\Documents\C\dvpez.c|33|warning: return type defaults to 'int' [enabled by default]|
    D:\Users\pgradot\Documents\C\dvpez.c||In function 'initialise_population':|
    D:\Users\pgradot\Documents\C\dvpez.c|35|warning: implicit declaration of function 'srand' [-Wimplicit-function-declaration]|
    D:\Users\pgradot\Documents\C\dvpez.c|36|warning: ISO C forbids nested functions [-pedantic]|
    D:\Users\pgradot\Documents\C\dvpez.c||In function 'myrand':|
    D:\Users\pgradot\Documents\C\dvpez.c|38|warning: implicit declaration of function 'rand' [-Wimplicit-function-declaration]|
    D:\Users\pgradot\Documents\C\dvpez.c||In function 'initialise_population':|
    D:\Users\pgradot\Documents\C\dvpez.c|44|warning: declaration of 'tableau' shadows a global declaration [-Wshadow]|
    D:\Users\pgradot\Documents\C\dvpez.c|24|warning: shadowed declaration is here [-Wshadow]|
    D:\Users\pgradot\Documents\C\dvpez.c|81|warning: implicit declaration of function 'printf' [-Wimplicit-function-declaration]|
    D:\Users\pgradot\Documents\C\dvpez.c|81|warning: incompatible implicit declaration of built-in function 'printf' [enabled by default]|
    D:\Users\pgradot\Documents\C\dvpez.c|84|warning: incompatible implicit declaration of built-in function 'printf' [enabled by default]|
    D:\Users\pgradot\Documents\C\dvpez.c|86|warning: control reaches end of non-void function [-Wreturn-type]|
    out\Debug\formatting.o:formatting.c|| multiple definition of `main'|
    out\Debug\dvpez.o:dvpez.c|| first defined here|
    ||=== Build finished: 2 errors, 11 warnings (0 minutes, 1 seconds) ===|
    Quel compilateur utilises-tu ? Comment l'utilises-tu (ligne de commande ou IDE) ?

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  2. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  3. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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