Partage
  • Partager sur Facebook
  • Partager sur Twitter

petite application bancaire

comment afficher l'historique des transactions

    15 avril 2022 à 11:27:41

    bacelar a écrit:

    Bin moi, je ne suis pas un grand nom de l'Informatique, je suis très très con, c'est pour ça que je fais des choses simples, je repompe le travail des autres en attendant de mieux comprendre les spécificités du problème et de me prendre les difficultés dans la gueule à ce moment là.

    Mais au moins, j'ai pas à résoudre des problèmes que des personnes ben plus éclairées et expérimentées ont défrichés.

    Je ne travaille pas pour la NASA, contrairement à toi visiblement @JadeSalina et tes problèmes "originaux".


    Je trouve que c’est dommage de se rabaisser

    -
    Edité par JadeSalina 15 avril 2022 à 22:24:27

    • Partager sur Facebook
    • Partager sur Twitter
      15 avril 2022 à 11:47:27

      bonjour à tous

      merci pour vos différentes réactions et tous.

      j'avais une erreur de compilateur , j'ai installé  le compilateur c++11 et le "to_string" qui bloquait l'exécution du programme à réussi.

      maintenant je veux transformer le code en orienté objet c++ . je suis encore sur la fonctionnalité login, mais je rencontre des difficultés.

      j'ai besoin de vos différentes expertises

      ci-dessous nous avons "login.h"

      #ifndef LOGIN_H_INCLUDED
      #define LOGIN_H_INCLUDED
      #include <iostream>
      
      class login{
      
      private:
           std::string name;
           std::string pass;
           const std::string pwd("1234");
           const int taille(6);
           std::string t1[taille]={"toto","tata","tutu","titi","tete","tyty"};
           int t2[taille]={100,100,100,100,100,100};
           bool isConnected=false;
      
      public:
         login(std::string name, std::string pass);
         connection(std::string name, std::string pass);
      
      std::string login::getName(){
          return name;
      }
      
      std::string login::getPass(){
          return pass;
      }
      
      
      void login::setName(std::string name){
          name = name;
      }
      
      void login::setPass(std::string pass){
          pass = pass;
      }
      
      
      };
      
      
      #endif // LOGIN_H_INCLUDED
      

      ensuite "login.cpp"

      #include <iostream>
      #include "login.h"
      using namespace std;
      
      class login{
      
          login::login(string name, string pass):name(name), pass(pass)
          {
      
          }
      
          login::connection(string name, string p){
           
              if(p==pwd){
                  for(int i=0; i<taille; i++){
                      if(t1[i]==name){
                          isConnected=true;
                      }   sauv=i;
                  }
              }
          }
      };
      
      

      enfin "main.cpp"

      #include <iostream>
      #include "login.h"
      
      using namespace std;
      
      int main(){
          do{
              cout<<"entrez votre nom"<<endl;
              cin>>name;
              cout<<"saisir le mot de passe"<<endl;
              cin>>p;
      
          }while(isConnected==false);
      
      login user1(name, pass);
      
      user1.login(user1.getName(), user1.getPass());
      }

      voici les erreurs de compilation obtenues:

      ||=== Build: Debug in essai (compiler: GNU GCC Compiler) ===|
      login.h|10|error: expected identifier before string constant|
      login.h|10|error: expected ',' or '...' before string constant|
      login.h|11|error: expected identifier before numeric constant|
      login.h|11|error: expected ',' or '...' before numeric constant|
      login.h|12|error: array bound is not an integer constant|
      login.h|12|error: a brace-enclosed initializer is not allowed here before '{' token|
      login.h|13|error: array bound is not an integer constant|
      login.h|13|error: a brace-enclosed initializer is not allowed here before '{' token|
      login.h|14|error: ISO C++ forbids initialization of member 'isConnected'|
      login.h|14|error: making 'isConnected' static|
      login.h|14|error: ISO C++ forbids in-class initialization of non-const static member 'isConnected'|
      login.h|18|error: ISO C++ forbids declaration of 'connection' with no type|
      login.h|20|error: extra qualification 'login::' on member 'getName'|
      login.h|24|error: extra qualification 'login::' on member 'getPass'|
      login.h|29|error: extra qualification 'login::' on member 'setName'|
      login.h|33|error: extra qualification 'login::' on member 'setPass'|
      login.cpp|5|error: redefinition of 'class login'|
      login.h|5|error: previous definition of 'class login'|
      ||=== Build failed: 18 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
      login.h|10|error: expected identifier before string constant|
      login.h|10|error: expected ',' or '...' before string constant|
      login.h|11|error: expected identifier before numeric constant|
      login.h|11|error: expected ',' or '...' before numeric constant|
      login.h|12|error: array bound is not an integer constant|
      login.h|12|error: a brace-enclosed initializer is not allowed here before '{' token|
      login.h|13|error: array bound is not an integer constant|
      login.h|13|error: a brace-enclosed initializer is not allowed here before '{' token|
      login.h|14|error: ISO C++ forbids initialization of member 'isConnected'|
      login.h|14|error: making 'isConnected' static|
      login.h|14|error: ISO C++ forbids in-class initialization of non-const static member 'isConnected'|
      login.h|18|error: ISO C++ forbids declaration of 'connection' with no type|
      login.h|20|error: extra qualification 'login::' on member 'getName'|
      login.h|24|error: extra qualification 'login::' on member 'getPass'|
      login.h|29|error: extra qualification 'login::' on member 'setName'|
      login.h|33|error: extra qualification 'login::' on member 'setPass'|
      main.cpp||In function 'int main()':|
      main.cpp|12|error: 'name' was not declared in this scope|
      main.cpp|14|error: 'p' was not declared in this scope|
      main.cpp|16|error: 'isConnected' was not declared in this scope|
      main.cpp|18|error: 'name' was not declared in this scope|
      main.cpp|18|error: 'pass' was not declared in this scope|
      main.cpp|20|error: invalid use of 'class login'|
      ||=== Build failed: 40 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
      

      merci



      • Partager sur Facebook
      • Partager sur Twitter
        15 avril 2022 à 12:58:48

        JadeSalina a écrit:

        d’imaginer que "des gens plus compétents ont fait ceci ou cela", à un moment donné ce ne sont pas des dieux non plus.

        Tu as tout à fait raison...Au fait, que penses tu de handmade? (attaque personnelle parfaitement assumée ;) )

        JadeSalina a écrit:

        Et personne n’a résolu le problème exact qu’on a sous les yeux, il y a toujours des spécificités donc ça ne dispense par de réfléchir. Et quitte à réfléchir, autant en profiter  pour faire la solution la plus sûr-mesure et adaptée possible à l’instance du problème qu’on a au lieu d’essayer de faire rentrer au chausse pied un pattern existant.

        Tu as décidément l'art de te contredire sans même t'en rendre compte...

        Car c'est exactement ce que je mettais en évidence dans le dernier point de mon intervention précédente, et que tu ne t'es senti obligé de démonter en plaidant pour " MAIS il est extrêmement important de savoir expérimenter et faire du code brouillon. "

        JadeSalina a écrit:

        Et quand on vous dis KISS, ça vous fait penser à quoi ? Pour moi ça veut dire ne pas partir bille en tête sur une solution over engineerée alors qu’on aurait pu faire un truc plus simple et flexible (oui je dit bien flexible car il est plus simple de mettre à jour du code avec une structure minimale que si il a déjà toute une hiérarchie à réécrire et réorganiser etc). Après il y a aussi un juste milieu à trouver

        Où as tu vu que l'on proposais la moindre solution "over engineerée "? On dit juste -- et le pire, c'est que tu sembles d'accord avec nous -- qu'avant de se jeter sur le clavier et de commencer à "vomir du  code", il faut  essayer d'avoir une idée "suffisamment précise" de l'endroit d'où l'on part (c'est à dire de nulle part), de vers quoi l'on tend (c'est à dire vers un programme qui permet "un certain nombre" de choses plus ou moins bien définies),que pour se faire une idée assez précise des priorités pour la mise en oeuvre.

        Une fois que l'on a cette "idée générale", on dit qu'il traiter chaque priorité de manière ordonnée, c'est à  dire: commencer l'analyser avec suffisamment de précision que pour être sur de bien comprendre ce que l'on attend de sa part, afin de trouver la solution qui nous semble le mieux tenir debout et le mieux s'intégrer à  ce qui existe.

        Et surtout, de se dire que, si "quelque chose"  (la bibliothèque standard en tête, d'autres bibliothèques tierces au besoin) peut nous éviter de nous casser la tête sur des problèmes triviaux, il faut partir du principe qu'il est préférable d'utiliser ce quelque  chose plutôt que de réinventer la roue à chaque  fois.

        JadeSalina a écrit:

        Un exemple de ce que j’appelle flexibilité : on a deux bouts de code qui font la même chose à 2 endroits différent, on pourrait se dire qu’il faut introduire une fonction pour ne pas dupliquer le code.

        Oui, exactement...

        JadeSalina a écrit:

        Mais imaginons que dans la suite le deuxième bout de code qui faisait la même chose se retrouve à faire un truc un peu différent parce que le client à de nouvelles idées ou autre. Et bien dans le cas où on laisse le code dupliqué, il n’y a rien à faire à part coder le nouveau truc directement alors qu’avec la fonction on va se battre en essayant éventuellement de paramétrer la fonction pour qu’elle fasse l’une ou l’autre chose, ouais mais euh en fait non c’est pas tout à fait pareil mmmmh ouais du coup euuuh.

        Héhé, même pas...

        La règle (enfin, l'OCP) nous dit que le code qui a été écrit, testé et validé ne devrait jamais avoir à changer. La fonction qui répondait aux besoins dans un premier temps est l'exemple d'application de ce principe:

        Si les besoins évoluent, il y a deux possibilités:

        Soit les besoins évoluent à un tel point que le code existant en devient inutile, et on peut décider de garder (ou non)l'ancienne version "pour archive" (au risque de créer du  code mort) mais en réécrivant une "nouvelle version"

        Soit l'évolution des besoins ne rend pas le code existant inutile, parce qu'il continue à être appelé depuis "au moins un endroit".  Et dans ce cas, il faut simplement de créer "une nouvelle fonction" (qui pourrait porter le même nom que l'ancienne si des paramètres supplémentaires sont requis) pour répondre à ces "besoins évolués".

        Quoi qu'il en soit, ou bien le code qui a été testé et validé précédemment est (éventuellement) supprimé parce que devenu inutile, ou bien il reste intouché parce qu'encore nécessaire "en l'état".

        • Partager sur Facebook
        • Partager sur Twitter
        Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
          15 avril 2022 à 13:59:33

          MelissaNgouleu a écrit:

          voici les erreurs de compilation obtenues:

          ||=== Build: Debug in essai (compiler: GNU GCC Compiler) ===|
          login.h|10|error: expected identifier before string constant|
          login.h|10|error: expected ',' or '...' before string constant|
          login.h|11|error: expected identifier before numeric constant|
          login.h|11|error: expected ',' or '...' before numeric constant|
          login.h|12|error: array bound is not an integer constant|
          login.h|12|error: a brace-enclosed initializer is not allowed here before '{' token|
          login.h|13|error: array bound is not an integer constant|
          login.h|13|error: a brace-enclosed initializer is not allowed here before '{' token|
          login.h|14|error: ISO C++ forbids initialization of member 'isConnected'|
          login.h|14|error: making 'isConnected' static|
          login.h|14|error: ISO C++ forbids in-class initialization of non-const static member 'isConnected'|
          login.h|18|error: ISO C++ forbids declaration of 'connection' with no type|
          login.h|20|error: extra qualification 'login::' on member 'getName'|
          login.h|24|error: extra qualification 'login::' on member 'getPass'|
          login.h|29|error: extra qualification 'login::' on member 'setName'|
          login.h|33|error: extra qualification 'login::' on member 'setPass'|
          login.cpp|5|error: redefinition of 'class login'|
          login.h|5|error: previous definition of 'class login'|
          ||=== Build failed: 18 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
          login.h|10|error: expected identifier before string constant|
          login.h|10|error: expected ',' or '...' before string constant|
          login.h|11|error: expected identifier before numeric constant|
          login.h|11|error: expected ',' or '...' before numeric constant|
          login.h|12|error: array bound is not an integer constant|
          login.h|12|error: a brace-enclosed initializer is not allowed here before '{' token|
          login.h|13|error: array bound is not an integer constant|
          login.h|13|error: a brace-enclosed initializer is not allowed here before '{' token|
          login.h|14|error: ISO C++ forbids initialization of member 'isConnected'|
          login.h|14|error: making 'isConnected' static|
          login.h|14|error: ISO C++ forbids in-class initialization of non-const static member 'isConnected'|
          login.h|18|error: ISO C++ forbids declaration of 'connection' with no type|
          login.h|20|error: extra qualification 'login::' on member 'getName'|
          login.h|24|error: extra qualification 'login::' on member 'getPass'|
          login.h|29|error: extra qualification 'login::' on member 'setName'|
          login.h|33|error: extra qualification 'login::' on member 'setPass'|
          main.cpp||In function 'int main()':|
          main.cpp|12|error: 'name' was not declared in this scope|
          main.cpp|14|error: 'p' was not declared in this scope|
          main.cpp|16|error: 'isConnected' was not declared in this scope|
          main.cpp|18|error: 'name' was not declared in this scope|
          main.cpp|18|error: 'pass' was not declared in this scope|
          main.cpp|20|error: invalid use of 'class login'|
          ||=== Build failed: 40 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
          

          merci




          Pour etre vraiment, vraiment franc, faudrait que tu t'asseyes, tu relises proprement le C++ de préférence sur zestedusavoir.com puis après avoir fini au minimum les classes, tu reviennes avec tes erreurs(que tu n'auras probablement plus si tu lis bien).

          Tu as beaucoup de lacunes et corriger tes erreurs de compilation ici n'arrangera pas cela.

          • Partager sur Facebook
          • Partager sur Twitter
            15 avril 2022 à 14:14:10

            @MelissaNgouleu    Bon, on va essayer de trouver une place pour te répondre ! (Ton tropic a été quelque peu pollué).

            Il y a beaucoup d'erreur sur des principes de base.

            Ligne 10, la mauvaise habitude d'initialiser les variables avec des parenthèses t'as foutu dedans.

                const std::string pwd("1234");

            Il faut le faire avec des accolades, c'est ce qui est utilisé de nos jours :

                const std::string pwd{"1234"};

            ou éventuellement avec l'opérateur d'affectation :

                const std::string pwd="1234";

            Ligne 12 et 13 Les tableaux (t1 et t2) de type VLA (taille initialisé avec une variable) ne sont pas autorisé en C++ seulement en C et encore.

            Si tu veux un tableau à taille variable tu devras donc utiliser un std::vector.

            Dans la déclaration des fonction membre d'une classe, il ne faut pas mettre le nom de la classe :

                std::string login::getPass()
                {
                    return pass;
                }

            mais :

                std::string getPass()
                {
                    return pass;
                }

            Et lors de la définition des fonctions il ne faut pas les mettre dans une seconde déclaration de la classe :

            class login
            {
                login::login(string name, string pass):name(name), pass(pass)
                {
            
                }

            Mais :

            login::login(std::string name, std::string pass):name(name), pass(pass)
            {
            
            }

            Et cette fois bien précédé du nom de la classe  login:: pour préciser a quel classe la fonction appartient.

            ect...

            PS :

            MelissaNgouleu a écrit:

            j'avais une erreur de compilateur , j'ai installé  le compilateur c++11 et le "to_string" qui bloquait l'exécution du programme à réussi.

            Tu n'as plus de to_string dans ton code !

            -
            Edité par rouIoude 15 avril 2022 à 14:20:02

            • Partager sur Facebook
            • Partager sur Twitter
            ...
              15 avril 2022 à 14:50:01

              merci roulude

              si j'ai toujours to_string dans mon code, mais sa intervient au niveau des fonctionnalités crediter, debiter et annuler

              #include <iostream>
              #include <sstream>
              #include <stdlib.h>
              #include <string>
              #include <vector>
              
              using namespace std;
              
              namespace patch
              {
                  template < typename T > std::string to_string( const T& montant )
                  {
                      std::ostringstream stm ;
                      stm << montant ;
                      return stm.str() ;
                  }
              }
              
               string name;
               string p;
               string const pwd("1234");
               int const taille(6);
               string t1[taille]={"toto","tata","tutu","titi","tete","tyty"};
               int t2[taille]={100,100,100,100,100,100};
               vector<string> historique;
               bool isConnected=false;
               int operation;
               int montant;
               int solde;
               int sauv;
              
              void crediter(int montant);
              void debiter(int montant);
              void annuler();
              
              void crediter(int montant){
              
                  t2[sauv]+= montant;
                  cout<<"votre nouveau solde est de:"<<t2[sauv]<<endl;
                  historique.push_back("vous avez crediter votre compte de:" +patch::to_string(montant)+ " et votre nouveau solde:" +patch::to_string(t2[sauv]));
               }
              
               void debiter(int montant){
                  if((t2[sauv]- montant)<100){
                      cout<<"solde insuffisant, veillez choisir un montant inférieur"<<endl;
                  }
                  else{
                      t2[sauv]-= montant;
                      cout<<"votre nouveau solde est de:"<<t2[sauv]<<endl;
                      historique.push_back("vous avez debiter votre compte de:"+ patch::to_string(montant)+ " et votre nouveau solde:" +patch::to_string(t2[sauv]));
                  }
              }
              
               void annuler(){
                  cout<<"vous avez effectuer les operations suivantes:"<<endl;
                  for(int i=0; i<historique.size(); i++){
                      cout<<(i+1)<<"."<<historique.at(i)<<endl;
                  }
                  cout<<"---------votre satisfaction c'est notre priorite, aurevoir!!!------------"<<endl;
                  exit(isConnected);
               }
              
              
              int main() {
              
               //fonction login
                  do{
              
                      cout<<"entrez votre nom"<<endl;
                      cin>>name;
                      cout<<"saisir le mot de passe"<<endl;
                      cin>>p;
                      if(p==pwd){
                          for(int i=0; i<taille; i++){
                              if(t1[i]==name);{
                                  isConnected=true;
                              }   sauv=i;
              
                          }
                          solde=t2[sauv];
                          cout<<"votre solde est de :"<<solde<<endl;
                      }
                  }while(isConnected==false);
              
              
              
               while(isConnected=true){
              
                   cout<<"------------------bienvenue dans notre banque--------"<<" "<<name<<endl;
                   cout<<"------------------choisir une operation-------------------------"<<endl;
                   cout<<"1:crediter"<<endl;
                   cout<<"2:debiter"<<endl;
                   cout<<"3:annuler"<<endl;
                   cin>>operation;
              
                   if(operation == 1){
                      cout<<"entrer le montant a crediter"<<endl;
                      cin>>montant;
                      crediter(montant);
                   }else{
                      if(operation==2){
                          cout<<"entrer le montant a debiter"<<endl;
                          cin>>montant;
                          debiter(montant);
                      }else{
                          if(operation==3){
                              annuler();
                          }else{
                              cout<<"---------bien vouloir choisir une operation existante------------"<<endl;
                           }
                       }
                   }
               }
              }
              
              

              je veux maintenant traduire ce code en c++ orienté Object en (créant les fonctionnalités au fur et à mesure) 

              je suis débutante en c++, j'ai écris ce code selon mon niveau de compréhension .

              même si certains le trouve un genre ce n'ai pas grave, je pouvais copier le code d'une personne x sur la toile mais ce n'ai pas ca l'apprentissage.

              je préfère écrire et demander de l'aide pour une ou plusieurs amélioration(s)

              • Partager sur Facebook
              • Partager sur Twitter
                15 avril 2022 à 15:09:26

                Ah oui, mais le to_string c'est toi qui le défini :

                namespace patch
                {
                    template < typename T > std::string to_string( const T& montant )
                    {
                        std::ostringstream stm ;
                        stm << montant ;
                        return stm.str() ;
                    }
                }

                Tu ne l'avais pas donné avant !

                Je vois que tu n'as toujours rien fait pour le while ligne 87 ? Si tu ne tiens pas compte des remarques, ça ne va pas avancé bien vite !

                Ni pour le if ligne 75 !

                Ce sont des erreurs que tu devrais être capable de corriger toi même, ou alors revient sur des exercices plus simple.

                -
                Edité par rouIoude 15 avril 2022 à 15:12:52

                • Partager sur Facebook
                • Partager sur Twitter
                ...
                  15 avril 2022 à 15:16:03

                  ligne 3: cstdlib a la place de stdlib.h

                  ligne 7: using namespace std peu recommandable...

                  ligne 23-24: Opte pour des std::array ou std::vector a la place de ces tableaux C (typename[])

                  Ca sert a rien de déclarer une fonction si c'est pour la definir juste apres je trouve, on déclare en haut pour définir dans un autre fichier ou dans une autre portion de code. Mais pas juste en bas. Et tu as encore tes variables globales!

                  Bon entre autres voici certaines recommandations

                  -
                  Edité par Asmitta 15 avril 2022 à 15:17:47

                  • Partager sur Facebook
                  • Partager sur Twitter
                    15 avril 2022 à 15:58:40

                    c'est corrigé et noté

                    merci

                    • Partager sur Facebook
                    • Partager sur Twitter
                      15 avril 2022 à 18:05:44 - Message modéré pour le motif suivant : Message complètement hors sujet


                        15 avril 2022 à 18:48:51

                        P*t**** c'est quoi ton problème a la fin ? 

                        On fais des suggestions/recommandations ici. Tu veux nous obliger a "faire" comme tu l'entends parce que tu trouves que c'est la "bonne" méthode (Et ne me sors plus des noms de personnes que je connais même pas)!??

                        Bah moi j'ai pas envie, tu saoules a la fin a force d'insister.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          15 avril 2022 à 18:52:47

                          @JadeSalina, Pourrais tu -- s'il te plait -- prendre l'habitude, lorsque tu veux simplement "chicanner" sur ce que les autres intervenants ont pu écrire sans apporter quoi que ce soit à la discussion, d'entamer ta propre discussion afin d'aborder le sujet qui te chagrine, afin de ne pas polluer la discussion en cours?

                          Peut être est-ce déjà  trop tard pour celle-ci, mais ca facilitera énormément la vie de tout le monde.

                          Tu ne dois même pas t'en faire : tu  auras forcément les réponses que tu mérites ;)
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
                            15 avril 2022 à 19:30:56 - Message modéré pour le motif suivant : Message complètement hors sujet


                              15 avril 2022 à 20:01:42

                              Titre su sujet:

                              petite application bancaire

                               Tu veux quelle révolution dans ce projet @JadeSalina? Le gars a plein de fautes de "grammaire" et d' "orthographe"  dans son code mais toi tu veux lui apprendre a fait une dissertation et en donnant même déjà des références. Aide le a parfaire son "Français"(code) premièrement puis quand ce sera "lisible" tu pourras lui émettre ton idée de révolution et libre a lui de te suivre ou t'écouter a ce moment.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                15 avril 2022 à 20:12:43

                                Est-ce que je dois répéter que c'est une petite application banquaire?
                                Désolé, je n'ai pas de contact avec le directeur informatique de la NASA.
                                • Partager sur Facebook
                                • Partager sur Twitter

                                Le Tout est souvent plus grand que la somme de ses parties.

                                  15 avril 2022 à 20:19:09

                                  >et bien allez y, éclatez moi avec vos projets énormissimes, pourquoi pas même révolutionnez le monde !

                                  Et bien passes devant, le génie, nous, on a plus 20 ans, ni même 40, pour ces conneries.

                                  JC (John Carmack), il a fait des jeux mais il sait aussi que c'est pas avec ces méthodes de travail à la con de Doom ou Quake qu'il sauvera le monde.

                                  Mais, il sait déjà bien comment enfumer les baker d'Oculus Rift qui l'on bien eut dans le baba.

                                  S'il te faut des héros, essayes de ne pas choisir des personnes qui prêtent plus que le flan à la controverse.

                                  (Ca fait combien de décennie(s) qu'il touche plus au code JC ? Depuis qu'il a bien niqué l'OpenGL avec ces conseils "à la con" ?)

                                  Point Godwin à l'approche.

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                                    16 avril 2022 à 18:56:19

                                    En lisant un autre post j'apprenais que j'étais un mauvais dev grâce à la sagesse de Jade Stalina. Maintenant j'apprends aussi que je suis un mauvais ingénieur R&D. Ça semble être le cas de tout mon labo aussi. Bon ben ne le dites pas à mon chef parce que ça craint pour nous sinon.

                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

                                      17 avril 2022 à 18:36:23

                                      - créer un tableau qui va stocker les informations

                                      - constante string pour le password, le même pour tout le monde

                                      - créer un tableau qui va stocker des entiers, lié par les indexes

                                      - écrire deux fonctions, la fonction créditer et débiter

                                      - une fois qu'on lance le user doit pouvoir se connecter, il peut soit créditer ou débiter son compte, soit annuler

                                      - initialement tous on un montant de 100

                                      - pour débiter, il faut qu'après l'opération il reste au moins 100

                                      - à la sortie on lui donne l'historique des opérations

                                      voici ce que je veux réaliser lorsque j'ai parlé de petite application bancaire depuis le départ. j'aurais du commencé par la afin de vous donner avec exactitude le ce sur quoi j'ai utilisé tel ou tel élément.

                                      j'exhorte les uns et les autres et ce avec amour : de répondre avec bienveillance et respect.

                                      "nul n'a le monopôle du savoir"

                                      bonsoir et joyeuse pâque à tous

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        17 avril 2022 à 20:29:24

                                        Tu pourrais créer une classe CompteBancaire pour les opérations bancaires: créditer, débiter, historique. Et chaque CompteBancaire aura un User(une autre classe si tu veux) qui sont identifiés par leur mot de passe par exemple.

                                        class CompteBancaire{
                                        private:
                                            User proprietaire; // ou juste std::string nom, prenom, mdp, etc.
                                            double solde;
                                            std::vector<std::string> historique;
                                        
                                        public:
                                            void crediter(double montant);
                                            void debiter(double montant);  // bool est peut-etre mieux que void
                                            void voir_historique(); // ou get
                                        };
                                        
                                        class User{
                                        private:
                                            int identifiant;
                                            std::string nom;
                                            std::string prenom;
                                            // autres infos..
                                            std::string mot_de_passe; // j'ai pas mis const car on doit pouvoir modifier son mot de passe je pense
                                        
                                        public:
                                            std::string get_nom_et_prenom();
                                            std::string get_mot_de_passe();
                                            // etc.
                                        }
                                        
                                        // Pour connecter l'utilisateur a son compte? 
                                        bool verifier_mot_de_passe(std::string, int); 

                                        Bon ceci est une idee

                                        -
                                        Edité par Asmitta 17 avril 2022 à 20:37:48

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          19 avril 2022 à 13:24:28

                                          bonjour 

                                          c'est encore moi, mais cette fois j'ai tout écris mes différents fichiers et j'aimerais avoir des corrections sur certains manquements ou des ajustements car le code ne fonctionne pas

                                          >User.h

                                          #ifndef USER_H_INCLUDED
                                          #define USER_H_INCLUDED
                                          #include <iostream>
                                          //#include "Compte.h"
                                          
                                          class User{
                                          private:
                                          
                                              std::string nom;
                                              std::string mot_de_passe;
                                          
                                          public:
                                              std::string getNom();
                                              std::string getMotDePasse();
                                              User(std::string nom, std::string mot_de_passe);
                                              int connection(std::string nom, std::string mot_de_passe) ;
                                          };
                                          
                                          #endif // USER_H_INCLUDED
                                          

                                          >User.cpp

                                          #include <iostream>
                                          #include <string.h>
                                          #include "User.h"
                                          
                                          using namespace std;
                                          
                                               static const std::string pwd = "1234";
                                               static const int taille = 6;
                                               std::string users[taille] = {"toto","tata","tutu","titi","tete","tyty"};
                                               int solde[taille] = {100,100,100,100,100,100};
                                               bool isConnected;
                                               int sauv = 0;
                                          
                                          
                                              string User::getNom(){
                                                  return nom;
                                              }
                                          
                                              string User::getMotDePasse(){
                                                  return mot_de_passe;
                                              }
                                          
                                              User::User(string nom, string mot_de_passe)
                                              {
                                                   nom = nom;
                                                   mot_de_passe = mot_de_passe;
                                                   isConnected=false;
                                              }
                                          
                                              int User::connection(string nom, string mot_de_passe){
                                          
                                                  int resultat = 0;
                                          
                                                  if(mot_de_passe == pwd){
                                                      for(int i=0; i<taille; i++){
                                                          if(users[i]==nom){
                                                              isConnected=true;
                                                              resultat = 1;
                                                          }   sauv=i;
                                                      }
                                                  }
                                                  return resultat;
                                              }
                                          
                                          
                                          

                                          >Compte.h

                                          #ifndef COMPTE_H_INCLUDED
                                          #define COMPTE_H_INCLUDED
                                          #include <iostream>
                                          //#include "User.h"
                                          
                                          class Compte
                                          {
                                            public:
                                              Compte();
                                              Compte(int montant);
                                              int getSolde() const;
                                              void crediter(int montant);
                                              void debiter(int montant);
                                              void afficher() const;
                                              void annuler();
                                          
                                          
                                            private:
                                              int solde;
                                              int montant;
                                          };
                                          
                                          #endif // COMPTE_H_INCLUDED
                                          

                                          >compte.cpp

                                          #include <iostream>
                                          #include <vector>
                                          #include <sstream>
                                          #include "Compte.h"
                                          #include "User.h"
                                          
                                          
                                          using namespace std;
                                          
                                          namespace patch
                                          {
                                              template < typename T > std::string to_string( const T& montant )
                                              {
                                                  std::ostringstream stm ;
                                                  stm << montant ;
                                                  return stm.str() ;
                                              }
                                          }
                                          
                                           vector<string> historique;
                                          
                                          Compte::Compte(): solde(0)
                                          {
                                          
                                          }
                                          
                                          Compte::Compte(int montant) : solde(montant)
                                          {
                                          
                                          }
                                          
                                          int Compte::getSolde() const
                                          {
                                            return solde;
                                          }
                                          
                                          void Compte::crediter(int montant)
                                          {
                                            //solde += montant;
                                              solde[sauv]+= montant;
                                              cout<<"votre nouveau solde est de:"<<solde[sauv]<<endl;
                                              historique.push_back("vous avez crediter votre compte de:" +patch::to_string(montant)+ " et votre nouveau solde:" +patch::to_string(solde[sauv]));
                                          }
                                          
                                          void Compte::debiter(int montant)
                                          {
                                              //solde -= montant;
                                              if(((solde[sauv]) - montant)<100){
                                                  cout<<"solde insuffisant, veillez choisir un montant inférieur"<<endl;
                                              }
                                              else{
                                                  solde[sauv]-= montant;
                                                  cout<<"votre nouveau solde est de:"<<solde[sauv]<<endl;
                                                  historique.push_back("vous avez debiter votre compte de:"+ patch::to_string(montant)+ " et votre nouveau solde:" +patch::to_string(solde[sauv]));
                                              }
                                          }
                                          
                                          void Compte::annuler()
                                          {
                                              cout<<"vous avez effectuer les operations suivantes:"<<endl;
                                              for(int i=0; i<historique.size(); i++){
                                                  cout<<(i+1)<<"."<<historique.at(i)<<endl;
                                              }
                                              cout<<"---------votre satisfaction c'est notre priorite, aurevoir!!!------------"<<endl;
                                          
                                              exit(isConnected);
                                          }
                                          
                                          void Compte::afficher() const
                                          {
                                            cout<<getSolde()<<" francfa "<<endl;
                                          }
                                          
                                          
                                              while(isConnected=true){
                                          
                                                   cout<<"------------------bienvenue dans notre banque--------"<<" "<<name<<endl;
                                                   cout<<"------------------choisir une operation-------------------------"<<endl;
                                                   cout<<"1:crediter"<<endl;
                                                   cout<<"2:debiter"<<endl;
                                                   cout<<"3:annuler"<<endl;
                                                   cout<<"4:afficher_solde"<<endl;
                                                   cin>>operation;
                                          
                                                   if(operation == 1){
                                                      cout<<"entrer le montant a crediter"<<endl;
                                                      cin>>montant;
                                                      crediter(montant);
                                                   }else{
                                                      if(operation==2){
                                                          cout<<"entrer le montant a debiter"<<endl;
                                                          cin>>montant;
                                                          debiter(montant);
                                                      }else{
                                                          if(operation==3){
                                                              annuler();
                                                          }else{
                                                              if(operation==4){
                                                                  afficher();
                                                              }
                                                              else{
                                                                  cout<<"---------bien vouloir choisir une operation existante------------"<<endl;
                                                              }
                                          
                                                           }
                                                       }
                                                   }
                                              }
                                          

                                          >main.cpp

                                          #include <iostream>
                                          #include "User.h"
                                          #include "Compte.h"
                                          #include "User.cpp"
                                          #include "Compte.cpp"
                                          
                                          using namespace std;
                                          
                                          int main()
                                          {
                                              string nom;
                                              string mot_de_passe;
                                          
                                              cout<<"saisir votre nom"<<endl;
                                              cin>>nom;
                                              cout<<"saisir votre mot de passe"<<endl;
                                              cin>>mot_de_passe;
                                          
                                              Compte cb(100);
                                              cout << "Etat du compte : " ;
                                              cb.afficher();
                                          
                                              return 0;
                                          }
                                          

                                          le main.cpp est incomplet 

                                          le code ne fonctionne pas 

                                          merci pour votre bonne compréhension




                                           

                                          -
                                          Edité par MelissaNgouleu 19 avril 2022 à 13:37:05

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            19 avril 2022 à 13:32:53

                                            En ayant regardé seulement le fichier main, une chose me saute aux yeux : Il ne faut pas inclure les fichiers source (les .cpp) !
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                            ...
                                              19 avril 2022 à 13:39:01

                                              j'obtiens les erreurs suivantes:

                                              ||=== Build: Debug in prog (compiler: GNU GCC Compiler) ===|
                                              \c++\prog\Compte.cpp||In member function 'void Compte::crediter(int)':|
                                              \c++\prog\Compte.cpp|40|error: 'sauv' was not declared in this scope|
                                              \c++\prog\Compte.cpp||In member function 'void Compte::debiter(int)':|
                                              \c++\prog\Compte.cpp|48|error: 'sauv' was not declared in this scope|
                                              \c++\prog\Compte.cpp||In member function 'void Compte::annuler()':|
                                              \c++\prog\Compte.cpp|61|warning: comparison between signed and unsigned integer expressions|
                                              \c++\prog\Compte.cpp|66|error: 'isConnected' was not declared in this scope|
                                              \c++\prog\Compte.cpp|66|error: 'exit' was not declared in this scope|
                                              \c++\prog\Compte.cpp|75|error: expected unqualified-id before 'while'|
                                              ||=== Build finished: 5 error(s), 1 warning(s) (0 minute(s), 0 second(s)) ===

                                              et lorsque j'inclus "User.cpp" dans "Compte.cpp" j'obtiens plutôt ce qui suit comme erreur:

                                              ||=== Build: Debug in prog (compiler: GNU GCC Compiler) ===|
                                              \c++\prog\Compte.cpp||In member function 'void Compte::crediter(int)':|
                                              \c++\prog\Compte.cpp|40|error: invalid types 'int[int]' for array subscript|
                                              \c++\prog\Compte.cpp|41|error: invalid types 'int[int]' for array subscript|
                                              \c++\prog\Compte.cpp|42|error: invalid types 'int[int]' for array subscript|
                                              \c++\prog\Compte.cpp||In member function 'void Compte::debiter(int)':|
                                              \c++\prog\Compte.cpp|48|error: invalid types 'int[int]' for array subscript|
                                              \c++\prog\Compte.cpp|52|error: invalid types 'int[int]' for array subscript|
                                              \c++\prog\Compte.cpp|53|error: invalid types 'int[int]' for array subscript|
                                              \c++\prog\Compte.cpp|54|error: invalid types 'int[int]' for array subscript|
                                              \c++\prog\Compte.cpp||In member function 'void Compte::annuler()':|
                                              \c++\prog\Compte.cpp|61|warning: comparison between signed and unsigned integer expressions|
                                              \c++\prog\Compte.cpp|66|error: 'exit' was not declared in this scope|
                                              \c++\prog\Compte.cpp|75|error: expected unqualified-id before 'while'|
                                              ||=== Build failed: 9 error(s), 1 warning(s) (0 minute(s), 0 second(s)) ===|
                                              



                                              d'accord

                                              #include <iostream>
                                              #include "User.h"
                                              #include "Compte.h"
                                              
                                              
                                              using namespace std;
                                              
                                              int main()
                                              {
                                                  string nom;
                                                  string mot_de_passe;
                                              
                                                  cout<<"saisir votre nom"<<endl;
                                                  cin>>nom;
                                                  cout<<"saisir votre mot de passe"<<endl;
                                                  cin>>mot_de_passe;
                                              
                                                  Compte cb(100);
                                                  cout << "Etat du compte : " ;
                                                  cb.afficher();
                                              
                                                  return 0;
                                              }

                                              -
                                              Edité par MelissaNgouleu 19 avril 2022 à 13:50:58

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                19 avril 2022 à 13:53:39

                                                sauv est une variable global (on évite les variables global) qui est défini dans user.cpp toi tu essais de l'utiliser dans compte.cpp sans la déclarer (on utilise le mot clé extern pour l'utiliser dans un autre fichier source. (je le redis, on évite les variables global).

                                                MelissaNgouleu a écrit:

                                                et lorsque j'inclus "User.cpp" dans "Compte.cpp" j'obtiens plutôt ce qui suit comme erreur:

                                                Je le redis, mais on inclus pas les fichier source .cpp

                                                Les erreurs sont différentes car il n'y a plus qu'un fichier source en les incluants, mais il ne faut pas le faire !

                                                Et les erreurs sont du à ce qu'une variable membre de ta classe porte le même nom qu'une de tes variable global et que tu veux appeler la variable global dans une fonction membre or c'est la variable membre qui est sollicitée au lieu de la variable global.  

                                                Il y a la possibilité de l’appeler avec l'opérateur de porté :: avant son nom ::solde[sauv] mais c'est mieux d'avoir des noms différent et encore mieux de ne pas avoir de variable global.

                                                EDIT : /!\ Après je ne suis pas content que tu ne tienne pas compte de ce que l'on te dit :

                                                 C'est la troisième fois que je te le dis mais tu n'as toujours pas corrigé ton while ligne 75 de compte.cpp. Et en plus maintenant il est en dehors de toutes fonction !

                                                -
                                                Edité par rouIoude 19 avril 2022 à 14:11:49

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                ...
                                                  19 avril 2022 à 14:10:03

                                                  j'ai retiré le User.cpp dans Compte.cpp

                                                  dans Compte.cpp , j'écris extern int sauv = 0; pour faire référence à la variable sauv déclarée dans User.cpp?

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    19 avril 2022 à 14:23:55

                                                    merci j'ai corrigé

                                                    concernant cette erreur , qu'est ce qui doit être changé ?

                                                    \c++\prog\Compte.cpp|43|error: invalid types 'int[int]' for array subscript|
                                                    



                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      19 avril 2022 à 14:45:08

                                                      rouIoude a écrit:

                                                      Et les erreurs sont du à ce qu'une variable membre de ta classe porte le même nom qu'une de tes variable global et que tu veux appeler la variable global dans une fonction membre or c'est la variable membre qui est sollicitée au lieu de la variable global.  

                                                      Il y a la possibilité de l’appeler avec l'opérateur de porté :: avant son nom ::solde[sauv] mais c'est mieux d'avoir des noms différent et encore mieux de ne pas avoir de variable global.



                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                      ...
                                                        19 avril 2022 à 14:49:04

                                                        rouloude je peut avoir un exemple stp? car je comprends pas

                                                        Il y a la possibilité de l’appeler avec l'opérateur de porté :: avant son nom ::solde[sauv] mais c'est mieux d'avoir des noms différent et encore mieux de ne pas avoir de variable global.


                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          19 avril 2022 à 15:06:38

                                                          Tu est en train de faire un projet qui n'est pas à ta portée, tu ne maîtrises pas suffisamment les bases du langage. Il faut comprendre que le forum n'est pas un débogueur en ligne. Il y a beaucoup d'erreur dans ton code aussi bien de conception que de syntaxe. parce que la demain on y est encore.

                                                          Si tu ne connait pas l'opérateur de résolution de portée :: alors change le nom de ta variable pour qu'il n'y ai pas de collisions, ou mieux n'utilise pas de variable globale ou lis un cours sur le C++, mais lis tout de même un cours.

                                                          PS : L'exemple je te l'ai donné, mais tu ne le vois pas !!! :  ::solde[sauv]  (C'est une solution pour te dépanner, mais pas une bonne solution).

                                                          -
                                                          Edité par rouIoude 19 avril 2022 à 15:08:43

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                          ...

                                                          petite application bancaire

                                                          × 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