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 :

Comptabiliser les résultats


Sujet :

C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 24
    Points : 13
    Points
    13
    Par défaut Comptabiliser les résultats
    Bonjour,

    Je code présentement un exercice qui consiste à attribuer les passagers d'un autobus en fonction qu'ils sont fumeur ou non. La capacité des autobus est un maximum de 40 passagers.
    Jusqu'ici tout va bien dans mon code. C'est lorsque je veux comptabilisé les résultats entre les choix que je ne sais plus par quoi procéder.
    Dans quel direction, je dois aller pour que mon code affiche, si par exemple l'autobus des fumeurs est rendu à 30 passagers et l'autobus des non fumeurs est rendu à 22 passagers?

    Voici le code:
    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
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
     
    //autobus.h
    #ifndef AUTOBUS_H
    #define AUTOBUS_H
     
    #include <iostream>
     
    using namespace std;
     
    const int FUMEUR = 1;
    const int NONFUMEUR = 2;
     
    class autobus {
    public:
        autobus (int statutf) : statut (statutf),
        nb_siege (40),
        nb_siege_alloue (0) {
        }
        ~autobus() {
        }
        int isFumeur () {
            return statut;
        }
        int siegeAlloue() {
            return nb_siege_alloue;
        }
        int reserverSiege() {
            return (nb_siege_alloue < nb_siege ? nb_siege_alloue++ : 0);
        }
    private:
        int nb_siege;
        int nb_siege_alloue;
        int statut ;
    };
    #endif
     
    //Reservation.h
    #ifndef RESERVATION_H
    #define RESERVATION_H
    #include "autobus.h"
    #include <iostream>
     
    using namespace std;
    class Reservation {
    public:
        Reservation() {
            autobus_fumeur = new autobus (FUMEUR);
            autobus_non_fumeur = new autobus (NONFUMEUR);
        }
        ~Reservation () {
            delete autobus_fumeur;
            delete autobus_non_fumeur;
        }
        int reserver_fumeur() {
            return autobus_fumeur->reserverSiege();
        }
        int reserver_non_fumeur() {
            return autobus_non_fumeur->reserverSiege();
        }
        int siege_alloue_fumeur() {
            return autobus_fumeur->siegeAlloue();
        }
        int siege_alloue_non_fumeur() {
            return autobus_non_fumeur->siegeAlloue();
        }
    private:
        autobus* autobus_fumeur;
        autobus* autobus_non_fumeur;
    };
    #endif
     
    //file1.cpp
    #include <iostream>
    #include "reservation.h"
     
    using namespace std;
    int main(int argc, char **argv) {
        Reservation reserv;
        int reponse = 0;
        int nb_siege;
        char g;
        //while (reponse != 3) {
        do {
            (reponse = 0);
            cout << "Appuyez sur 1 pour Non-fumeurs "<< endl;
            cout << "Appuyez sur 2 pour Fumeurs "<< endl;
            cin >> reponse;
            if (reponse == 1) {
                nb_siege = reserv.reserver_non_fumeur();
            }
            if (nb_siege > 0) {
                cout << "Non-fumeurs " << nb_siege << endl;
            }
            if (reponse == 2) {
                nb_siege = reserv.reserver_fumeur();
            }
            //if (nb_siege > 0) {
            if (nb_siege > 1) {
                cout << "Fumeurs " << nb_siege << endl;
            }
            if (reponse == 3) {
                cout << "Reponse invalide" << endl;
            }
            std::cout << "Appuyez sur une touche" << std::endl;
            std::cin >> g;
        } while (reponse != 3);
        return 0;
    }

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    2-3 remarques au passage

    • Au lieu de faire 2 constantes, le mieux est de faire une énumération à l'intérieur de ta classe autobus. (*)
    • Pas la peine de faire des pointeurs d'autobus, surtout si tu n'utilises pas une lazy initialisation et que tu connais tous les paramètres pour les constructeurs.
    • Dans ton main, utilises un switch pour les réponses (1 ou 2) et un cas par défaut pour les mauvais choix. Et surtout, teste le retour de ta réservation dans le cas et non pas à l'extérieur.
    • Mets tes noms de classe en capitale.



    * :
    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
    class Autobus {
    public:
     
        enum e_status {
            status_smoker = 0,
            status_not_smoker
        } t_status;
     
     
    public:
     
        Autobus(Autobus::t_status input_status) : status(input_status) /* ... */ { /* ...*/}
     
    //  ...
     
    };

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Merci, je vais corriger tout cela.

    Et est-ce qu'il y a quelqu'un qui aurait une piste de solution, ou dans quelle direction que je devrais regarder pour pouvoir comptabilisé les résultats à savoir combien j'ai de personnes par autobus!?

    Merci

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    nb_siege_alloue c'est pas le nombre de sièges pris/réservés ? Et donc le nombre de personnes attendus dans le bus ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Oui effectivement, donc je devrais remplacer le ''0'' par ''40''?

    Par contre, il m'affichera pas combien de bancs sont présentement réservés?

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    J'ai tenté quelque chose et j'ai quelques messages d'erreur qui apparait sur mon code. Je crois d'ailleurs que j'ai trop mélangé de chose qui ne sont pas interrellié entre eux...
    Est-ce que quelqu'un a une petite idée de mon erreur?


    Ligne 85 : Definition or redeclaration of 'autobus_non_fumeur' not allowed inside a function
    Ligne 89 : Definition or redeclaration of 'autobus_non_fumeur' not allowed inside a function
    Ligne 112 : Called object type 'Autobus *' is not a function or function pointer & 'autobus_non_fumeur' is a private member of 'Reservation'
    Ligne 113 : No member named 'affiche_siegeAlloue' in 'Reservation'
    Ligne 117 : Called object type 'Autobus *' is not a function or function pointer & 'autobus_non_fumeur' is a private member of 'Reservation'
    Ligne 118 : No member named 'affiche_siegeAlloue' in 'Reservation'
    Ligne 123 : Function definition is not allowed here

    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
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
     
    //autobus.h
    #ifndef AUTOBUS_H
    #define AUTOBUS_H
     
    #include <iostream>
     
    using namespace std;
     
    const int FUMEUR = 1;
    const int NONFUMEUR = 2;
     
    class Autobus {
    public:
        Autobus (int affiche_place) : afficheplace (affiche_place),
        nb_siege (40),
        nb_siege_alloue (40) {
        }
        ~Autobus() {
        }
        int isFumeur () {
            return afficheplace;
        }
        int siegeAlloue() {
            return nb_siege_alloue;
        }
        int reserverSiege() {
            return (nb_siege_alloue < nb_siege ? nb_siege_alloue++ : 0);
        }
    private:
        int nb_siege;
        int nb_siege_alloue;
        int afficheplace ;
    };
    #endif
     
    //Reservation.h
    #ifndef RESERVATION_H
    #define RESERVATION_H
    #include "autobus.h"
    #include <iostream>
     
    using namespace std;
    class Reservation {
    public:
        Reservation() {
            autobus_fumeur = new Autobus (FUMEUR);
            autobus_non_fumeur = new Autobus (NONFUMEUR);
        }
        ~Reservation () {
            delete autobus_fumeur;
            delete autobus_non_fumeur;
        }
        int reserver_fumeur() {
            return autobus_fumeur->reserverSiege();
        }
        int reserver_non_fumeur() {
            return autobus_non_fumeur->reserverSiege();
        }
        int siege_alloue_fumeur() {
            return autobus_fumeur->siegeAlloue();
        }
        int siege_alloue_non_fumeur() {
            return autobus_non_fumeur->siegeAlloue();
        }
    private:
        Autobus* autobus_fumeur;
        Autobus* autobus_non_fumeur;
    };
    #endif
     
    //file1.cpp
    #include <iostream>
    #include "reservation.h"
     
    using namespace std;
    int main (int argc, char **argv) {
        Reservation reserv;
        int autobus_non_fumeur = 0;
        int autobus_fumeur;
        char type, nom;
     
        //méthodes pour ajouter un nom-fumeur et fumeur.
     
        void Reservation::autobus_non_fumeur(); //Methode pour ajouter un nom fumeur
        if (autobus_non_fumeur<40)
        {autobus_non_fumeur ++;}
     
        void Reservation::autobus_fumeur(); //Methode pour ajouter un fumeur
        if(autobus_fumeur<40)
        {autobus_fumeur ++;}
     
     
        //Fonction principale définir les variables du programme principale
        //Conditions
        //Tant que le nombre_fumeur n’est pas égale 40 ou le
        //nombre_nonfumeur n’est pas égale 40 continu
     
        while ( autobus_fumeur!= 40 && autobus_non_fumeur!= 40)
     
        {
            cout << "Entrer le nom du passager: " << endl<<endl;
            cin >> nom;
     
            cout << "Entrer le type de passager: " << endl<<endl;
            cout << " 1 pour Non-fumeur" <<endl;
            cout << " 2 pour fumeur" << endl;
     
            cin >> type ;
            if (type ==1)
     
            { reserv.autobus_non_fumeur(); //Appel la fonction Increm_nonfumeur()
                reserv.affiche_siegeAlloue();} //Appel la fonction Affiche_place()
     
            else if(type==2)
     
            { reserv.autobus_fumeur(); //Appel la fonction Increm_fumeur()
                reserv.affiche_siegeAlloue();} //Appel la fonction Affiche_place()
        }
     
        void Reservation::Affiche_place() //Methode Affiche_place pour imprimer
        //le nombre de passager et le nom du passager.
        {
            cout << "Nombre de passager dans l'autobus Non-fumeur : "
            << autobus_non_fumeur << endl;
     
            cout << "Nombre de passager dans l'autobus fumeur : "
            << autobus_fumeur << endl;
        }
        return 0;
    }

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    On va laisser de côté tout ce fatras de new et de delete qui n'ont aucun sens dans du C++ moderne.
    Votre ligne 85 ne fait que redéclarer une fonction, qui existe déjà, d'où la complainte du compilateur.

    Le code suivant correspondrait plus au commentaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    reserv.reserver_non_fumeur();

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

Discussions similaires

  1. Comment classer les résultats de ma requete ?
    Par eustache dans le forum Requêtes et SQL.
    Réponses: 19
    Dernier message: 27/02/2009, 22h03
  2. Réponses: 1
    Dernier message: 13/04/2005, 14h41
  3. pb avec les résultats trops gros
    Par nisaes dans le forum Bases de données
    Réponses: 2
    Dernier message: 13/01/2005, 10h44
  4. Comptabiliser les lignes de code d'un projet
    Par JPigKeud dans le forum Qualimétrie
    Réponses: 5
    Dernier message: 07/01/2005, 14h09
  5. Réponses: 5
    Dernier message: 05/10/2004, 13h05

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