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 :

Projet, separations en différents fichiers.


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Par défaut Projet, separations en différents fichiers.
    Bonjour,

    Voila j'avais creer un petit jeu en cpp et afin de le rendre plus jolie, j'ai décider de le separer en petits fichiers (comme tout le monde doit faire en faite)
    mais la je bloque, un tableau n'est pas dit en "donnée résultat" (terme de la fac ^^), enfin j'veut dire qu'il n'est pas nécessaire de les retourner pour y avoir acces partout normalement j'ai tord ?
    Alors que la il est évident de dire que je fait appel a des cases vides vu que j'ai des valeur abracadabrantes !!

    Je viens de tester avec un tableau d'entier simple, lorsque j'appel une valeur dans le main, toujours le même problème.

    Dois-je passer par les pointeurs ?

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    La séparation en différents fichiers n'a sans doute pas grand chose à voir avec les problèmes que tu rencontre.

    Et, le plus souvent, le recours au pointeurs ne sera pas une solution, mais plutôt une source de problèmes supplémentaires

    Par contre, l'utilisation des collections fournies par le standard (je pense en priorité, d'après tes dires, à la classe std::vector) a de bonnes chances de te simplifier énormément la vie

    Mais, pour pouvoir t'aider, il faudrait pouvoir voir ce que tu as déjà fait, car la boule de crystal de la plupart des intervenants est malheureusement en panne

    Pourrais tu donc nous montrer ton code, histoire que nous puissions nous faire une idée du problème et essayer d'y apporter une réponse
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Par défaut
    Merci je commencais a perdre espoir .
    Mais le code marchais avant que je sépare en fichiers c'est pour cela que j'ai ciblé la séparation comme problème.

    Hum j'ai vu ce qu'était ton fameux std::vector, c'est une sorte de "malloc" en cpp ?


    voici mon fichier main :


    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
     
    #include <cstdlib>
    #include <iostream>
    #include <math.h>
    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    #include <conio.h>
     
    #include "init.h"
    #include "tirage.h"
    #include "jeu.h"
    using namespace std;
     
    int main(int argc, char *argv[])
    {
        int O[5];
        int C[3][12];                      // Toutes les possibilité de tirage 
        int T[4][3][12];                   // Tableau de tirage [4] => 5 cartes tirées, [3] 4 type de couleurs, [12] 13 valeurs de cartes dif
        init(C);
        tirage (C, T);
        struct cartes cartes[10];
        mescartes(cartes);
        system("PAUSE");
        return EXIT_SUCCESS;
    }

    Voici mon fichier tirage.h :


    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
    #ifndef _tirage
    #define _tirage
     
    struct cartes
    {
           int c;
           int n;
    };
    typedef struct cartes cartes;
     
    void tirage (int C[3][12], int T[4][3][12]);
    void tirage2 (int* pointeurC, int* pointeurN, int t, int C[3][12], int T[4][3][12], struct cartes cartes[10]);
    void mescartes (struct cartes cartes[10], int x);
    void orga (struct cartes cartes[10], int T[5]);
    int mise (int a);
     
    #endif

    Voici mon fichier tirage.cpp :


    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
     
     
    #include <cstdlib>
    #include <iostream>
    #include <math.h>
    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    #include <conio.h>
     
    #include "init.h"
    #include "tirage.h"
    #include "jeu.h"
     
     
    using namespace std;
     
    void tirage (int C[3][12], int T[4][3][12])
    {
        int m, t, a, b;
        mise(m);
        struct cartes cartes[10];
        for(t=0;t<=5;++t)
        {
             tirage2(&a, &b, t, C, T, cartes);
        }
        int O[5];
        orga(cartes, O);
    }
     
     
    int mise (int a)
    {
        cout << "Quelle somme voulez vous parier" << endl;
        cin >> a;
        return a;
    }
     
    void tirage2 (int* pointeurC, int* pointeurN, int t, int C[3][12], int T[4][3][12], struct cartes cartes[10])
    {
         int x = 0;
         const int MAXC = 4;
         const int MAXN = 13;
         const int MIN = 1;
         while(x == 0)
         {
                   srand(time(NULL));
                   *pointeurC = ((rand() % (MAXC - MIN + 1))+ MIN);
                   *pointeurN = ((rand() % (MAXN - MIN + 1))+ MIN);
                   if(C[*pointeurC][*pointeurN] == 1)
                   {
                                                x = 1;
                   }
         }
         C[*pointeurC][*pointeurN] = 0;         // On met alors la case de la carte tirée a 0 pour éviter de la repiocher
         cartes[t].c = *pointeurC;
         cartes[t].n = *pointeurN;              // Tirage enregistré dans une structure
         cout << cartes[t].n << endl;
         cout << cartes[t].c << endl;
    }                                      
     
    void orga (struct cartes cartes[10], int T[5])
    {
        int k;
        for(int z=0;z<=5;++z)
        {
                T[z] = cartes[z].n;
        }
        for (int j=5;j>1;j--) 
     	{ 
     	  for (int i=1;i<j-1;i++) 
          { 
            if (T[i]>T[i+1]) 
       	    { 
       	    k=T[i]; 
       	    T[i]=T[i+1]; 
       	    T[i+1]=k; 
     
       	    } 
            cout << cartes[i].n << endl;
            cout << "" << cartes[i].c << endl;
          }
       }
    }

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Par défaut
    Voila je compile avec dev cpp (aie aie ??)
    Attention si tu run direct, j'ai mis des cout un peut partout pour connaitre la source du bug mais sans succès ...

  5. #5
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par superstarz Voir le message
    Hum j'ai vu ce qu'était ton fameux std::vector, c'est une sorte de "malloc" en cpp ?
    Non, ce n'est pas une sorte de malloc. C'est un conteneur qui effectivement gère lui même la mémoire dont il a besoin.


    Citation Envoyé par superstarz Voir le message
    voici mon fichier main :

    etc.
    Tu es bien conscient que la cartes du main n'a absolument aucun rapport avec la variable cartes de tirage.
    Donc tout les traitements que tu appliques à cartes dans tirage sont perdus lorsque tu reviens dans le main et que la variable cartes que tu manipules dans main et que tu passes à mescartes n'est pas initialisée.

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Par défaut
    Citation Envoyé par gl Voir le message
    Tu es bien conscient que la cartes du main n'a absolument aucun rapport avec la variable cartes de tirage.
    Donc tout les traitements que tu appliques à cartes dans tirage sont perdus lorsque tu reviens dans le main et que la variable cartes que tu manipules dans main et que tu passes à mescartes n'est pas initialisée.
    Et comment ça se fait ? C'est bien un tableau de structure non ?
    Comment dois je donc faire afin que cartes du tirage.cpp soit accessible dans le main ?
    Cependant même dans une autre fonction de tirage lorsque j'essaye d'accéder aux valeurs de cartes ça bug...

  7. #7
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par superstarz Voir le message
    Et comment ça se fait ?
    C'est le fonctionnement générale. Deux variables différentes, même si elles portent le même nom, sont bel et bien différentes.

    Citation Envoyé par superstarz Voir le message
    C'est bien un tableau de structure non ?
    Oui.

    Citation Envoyé par superstarz Voir le message
    Comment dois je donc faire afin que cartes du tirage.cpp soit accessible dans le main ?
    Il y a plusieurs solutions. Dans ton cas la plus simple est probablement de passer le tableau en paramètre de la fonction tirage et de supprimer la variable de même nom dans tirage.

    Citation Envoyé par superstarz Voir le message
    Cependant même dans une autre fonction de tirage lorsque j'essaye d'accéder aux valeurs de cartes ça bug...
    Où ? Dans quelle fonction ? Quelle est l'erreur constatée ?

Discussions similaires

  1. projet "SDL" en plusieurs fichiers
    Par stokastik dans le forum SDL
    Réponses: 52
    Dernier message: 15/09/2006, 11h16
  2. tableau 2D dans différents fichiers .c
    Par abelolive dans le forum C
    Réponses: 18
    Dernier message: 05/07/2006, 17h44
  3. [C++/MFC]Différents fichiers d'aide
    Par cjacquel dans le forum MFC
    Réponses: 1
    Dernier message: 08/05/2006, 17h57
  4. [Projet débutant] copie de fichiers
    Par stephonline29 dans le forum Débuter
    Réponses: 13
    Dernier message: 10/11/2005, 14h01
  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