Partage
  • Partager sur Facebook
  • Partager sur Twitter

Besoin d'aide pour création de menu

    3 octobre 2018 à 8:46:10

    Bonjour je voudrais donc pouvoir modifié chaque voiture 1,2,3,4,5 etc... à mon envis

    Je suis novice et j'ai déjà fait ceci par contre pour modifié je ne vois pas le procédé avec la struct

    Voici mon programme :

        #include <iostream>
        #include <conio2.h>
        using namespace std;
        int menu;

        struct voiture
        {
            string marque="****";
            string modele="****";
            int cylindree=0;
            float poids=0;
        };

        voiture vehicule[10];
        void menu_principal();
        void Visu(const voiture  & v);
        void Modif(const voiture  & v);


        int main()
        {

        do
        {

        {
            menu_principal();
            cin>>menu;
            cout<<endl;

                    switch(menu)
                {
                    case 1 :  ///appel de la fonction menu visualiser
                        clrscr();
                        int nb_fiche;

                         for(int i=0;i<10;i++)

                         {
                            textcolor(RED);
                            cout<<"Voiture : "<<i<<endl;
                         }

                        cout<<endl;
                        cout<<"Qu'elle est votre choix ? "<<endl<<endl;
                        cin >> nb_fiche;
                        Visu(vehicule[nb_fiche]);







                                break;
                    case 2 : ///appel de la fonction menu modifier
                        clrscr();
                        int nb_fiche2;
                            for(int i=0;i<10;i++)

                         {
                            textcolor(RED);
                            cout<<"Voiture : "<<i<<endl;
                         }
                         cout<<endl;
                        cout<<"Qu'elle est votre choix ? "<<endl<<endl;
                        cin >> nb_fiche;
                             Modif(vehicule[nb_fiche2]);





                                break;
                    case 3 : ///appel de la fonction quitter
                        textcolor(WHITE);
                            cout<<"Vous avez quittez le programme"<<endl;
                                break;
                    default: //gérer les erreurs

                    break;
                }
                }

        }
        while (menu !=3);
        return 0;
        }



        /// FONCTIONS
        void menu_principal()
        {

                clrscr();
                textcolor(YELLOW);
                cout<<"                                    MENU PRINCIPALE"<<endl<<endl;
                cout<<"1. Visualiser une fiche correspondant a un vehicule"<<endl<<endl;
                cout<<"2. Modifier une fiche correspondant a un vehicule."<<endl<<endl;
                cout<<"3. Quitter l'application"<<endl<<endl;
                cout<<"Qu'elle est votre choix : "<<endl<<endl;
        }

        void Visu(const voiture  & v)
        {
            textcolor(RED);
            clrscr();
            cout <<"marque = **** "<<endl<<endl;
            cout <<"modele = **** "<<endl<<endl;
            cout <<"cylindree : "<<endl<<endl;
            cout <<"poids : "<<endl<<endl;

            cout<<"Tapez une touche pour revenir au menu principale "<<endl<<endl;
            cin.ignore();
            cin.get();
            cin.ignore();
        }

       void Modif(const voiture  & v)
        {
            clrscr();
            cout<<"Tapez une touche pour revenir au menu principale "<<endl<<endl;
            cin.ignore();
            cin.get();
            cin.ignore();
        }

    • Partager sur Facebook
    • Partager sur Twitter
      31 octobre 2018 à 16:25:49

      Salut !

      Premièrement, la prochaine fois que tu poste du code, utilise les balises "<pre class="brush: c++;"> </pre>" ou clique sur le bouton ressemblant à ça : "</>", ce sera plus facile à lire et donc plus facile de t'aider.

      les éléments d'une structure se modifie comme une variable simple:

      struct foo{
          int a;
          double b;
      };
      
      void main(int argc, char *argv[]){
      
          foo objet;
          objet.a = 1; /* affectation */
          objet.b = 7.2;
      }

      de plus, je remarque que tu déclare des fonctions prenant les voiture comme arguments. Comme tu utilise du C++, pourquoi ne pas utiliser les classes ?

      pour rappel, voici comment déclarer une classe :

      voiture.h

      class voiture
      {
              string marque="****";
              string modele="****";
              int cylindree=0;
              float poids=0;
      public:
              voiture();
              voiture(string Marque, string Modele, int Cylindre, float Poids);
      
              string getMarque(){return marque;}
              string getModele(){return modele;}
              int getCylindree(){return cylindree;}
              float getPoid(){return poids;}
      
              void setMarque(string Marque){marque = Marque;}
              void setModele(string Modele){modele = Modele;}
              void setCylindree(int Cylindree){cylindree = Cylindree;}
              void setPoids(float Poids){poids = Poids;}
      
              void Visu();
              void Modif();
      }



       voiture.cpp

      voiture::voiture():
      marque("****"), modele("****"), cylindree(0), poids(0.)
      {
          // ...
      }
      
      voiture::voiture(string Marque, string Modele, int Cylindre, float Poids)
      {
          setMarque(Marque);
          setModele(Modele);
          setCylindre(Cylindre);
          setPoids(Poids);
      }



      main.cpp

      include "voiture.h"
      
      int main(int argc, char* argv[])
      {
          voiture Voitures[10];
      }

      pour modifier ta voiture, il te suffira d’appeler la méthode Modif() :

      voiture[0].Modif()


      Souhaites tu modifier les attributs un par un ? si c'est le cas, tu n'as même plus besoin de cette méthode, tu peux appeler les setters (setModèle, setPoids etc..)

      Veux-tu modifier tous les attributs d'un coup? dans ce cas, tu récupérer toutes la valeurs a changer en les passant en paramètres de la méthode Modif()

      afin que je puisse mieux t'aider, pourrais-tu préciser ton intention ?

      -
      Edité par Zaszigre 31 octobre 2018 à 16:28:42

      • Partager sur Facebook
      • Partager sur Twitter
        31 octobre 2018 à 16:47:56

        Quite à faire du C++, ne pas utiliser des tableaux "C", mais des classes comme std::array ou std::vector. :-°
        • Partager sur Facebook
        • Partager sur Twitter
        Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
          31 octobre 2018 à 16:56:02

          Euh, ce serait quand même assez bien qu'on ne puisse pas modifier la marque et le modèle d'une voiture en cours de route...

          • Partager sur Facebook
          • Partager sur Twitter
          Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
            31 octobre 2018 à 18:16:31

            string getMarque(){return marque;}
            string getModele(){return modele;}
            int getCylindree(){return cylindree;}
            float getPoid(){return poids;}

            Ces fonctions doivent être read-only.

            string getMarque() const {return marque;}
            string getModele() const {return modele;}
            int getCylindree() const {return cylindree;}
            float getPoid()    const {return poids;}

            Et l'utilisation de using namespace std est à proscrire (voir ici pourquoi).

            -
            Edité par Guit0Xx 31 octobre 2018 à 18:21:17

            • Partager sur Facebook
            • Partager sur Twitter

            ...

              31 octobre 2018 à 19:50:18

              voiture::voiture():

                marque("****"), modele("****"), cylindree(0), poids(0.)
              

              {

              // ...
              

              }

              voiture::voiture(string Marque, string Modele, int Cylindre, float Poids):marque(Marque), modele(Modele), cylindree(Cylindre) ,poids(Poids) {

              }

              // je crois c'est comme ca qu il faut faire pour l'initialisation des attribus

              -
              Edité par wafistos 31 octobre 2018 à 19:50:51

              • Partager sur Facebook
              • Partager sur Twitter
                1 novembre 2018 à 16:04:37

                Imagine que nous possédions la "même" voiture, même marque, même modèle... Si je plante la mienne dans un platane, ça ne devrait logiquement pas faire de toi un piéton...

                Si je vole ta voiture, tu n'as plus de voiture, pareil si tu me la vends...

                Ta classe voiture porte donc un attribut d'unicité: C'est ta voiture pas la mienne, ni celle de ton voisin, elle ne peut pas se trouver en même temps en bas de chez moi et dans ton garage. Elle ne devrait donc pas être copiable (On dit qu'elle a une sémantique d'entité).

                -
                Edité par int21h 1 novembre 2018 à 16:05:23

                • Partager sur Facebook
                • Partager sur Twitter
                Mettre à jour le MinGW Gcc sur Code::Blocks. Du code qui n'existe pas ne contient pas de bug

                Besoin d'aide pour création de menu

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown