Partage
  • Partager sur Facebook
  • Partager sur Twitter

problème avec bool operator<= en c++

Sujet résolu
    1 février 2019 à 9:50:55

    bonjour, j'ai un problème avec bool operator<= en c++.

    les opérateurs du dessus fonctionne normalement, il n'y a que le dernier qui pose problème. Quand je l'essaye ca renvoie toujours true même s'il ne devrait pas envoyer true mais false.

    -
    Edité par NewShacha1 1 février 2019 à 9:52:25

    • Partager sur Facebook
    • Partager sur Twitter
      1 février 2019 à 10:14:09

      Yo!
      J'ai pas l'impression qu'on puisse dire grand chose vis à vis de ton code. est-ce que tu peux mettre tout ton code (avec la balisee "</>" plutôt que des screenshots).
      2 petites remarques.
      Pourquoi tu mets
      if (a<b || a == b){
         return true;
      else
          return false;
      au lieu de
      return (a<b || a==b)

      comme tu l'as fais plus haut.
      Et pourquoi tu ne retournes pas simplement

      return !(a>b)

      vu que t'as déjà défini l'operateur?


      • Partager sur Facebook
      • Partager sur Twitter

      « Je n’ai pas besoin de preuve. Les lois de la nature, contrairement aux lois de la grammaire, ne permettent aucune exception. »
      D. Mendeleïev

        1 février 2019 à 10:24:29

        je suis nouveau sur le forum je ne savais pas a propos des balises, j'ai déjà fait

        return (a < b || a==)

        et c'est pareil c'est pour ca que j'ai voulu essayer de l'ecrire autrement. Ca fonstionne envin avec 

        return !(a > b)

        je ne sais pas du tout pourquoi je n'y ai pas penser, mais pourquoi

        return (a < b || a==b)

        ne fonctionne pas correctement?



        • Partager sur Facebook
        • Partager sur Twitter
          1 février 2019 à 10:33:27

          Sans le code complet, difficile à dire.

          En tout cas : changes de cours. Il apprend un sacré paquet d'âneries à ne pas faire, en plus de montrer des exemples de code buggés et d'être obsolète (quelques recherches sur le forum t'en diront plus). Prends plutôt le tutoriel disponible sur Zeste de Savoir. Ou encore le cours de C++ de @gbdivers, même s'il est encore en écriture il ne contient pas ce genre de bavures (et si tu as des problèmes de compréhension sur une partie et que ce n'est pas à cause d'un manque d'étude du cours, tu peux poster ici). Si tu préfères un cours déjà complet, tourne toi vers le C++ Primer de Lippman dans sa dernière édition (en anglais), il sera un poil moins à jour mais c'est un bon cours.

          • Partager sur Facebook
          • Partager sur Twitter

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

            1 février 2019 à 10:33:54

            La syntaxe de la fonction est la bonne.
            Pourrait-on avoir les fonctions estEgal et estPlusPetit ? Il peut aussi y avoir une erreur dans le constructeur, donc l'ensemble : déclaration de Date et définitions de l'ensemble des fonctions est peut-être nécessaire.
            • Partager sur Facebook
            • Partager sur Twitter

            En recherche d'emploi.

              1 février 2019 à 10:37:06

              #include "temps.h"
              
              Duree::Duree(int heures, int minutes, int secondes){
                  if(secondes > 60){
                      minutes += secondes / 60;
                      secondes %= 60;
                  }
                  if(minutes > 60){
                      heures += minutes / 60;
                      minutes %= 60;
                  }
                  m_heures = heures;
                  m_minutes = minutes;
                  m_secondes = secondes;
              }
              
              bool Duree::estEgal(Duree const& b) const{
                  return (m_heures == b.m_heures && m_minutes == b.m_minutes && m_secondes == b.m_secondes);
              }
              
              bool Duree::estPlusPetit(Duree const& b) const{
                  if(m_heures < b.m_heures){
                      return true;
                  }else if(m_heures == b.m_heures){
                      if(m_minutes < b.m_minutes){
                          return true;
                      }else if(m_minutes == b.m_minutes){
                          if(m_secondes < b.m_secondes){
                              return true;
                          }else{
                              return false;
                          }
                      }
                  }
              }
              
              bool operator==(Duree const& a, Duree const& b){
                  return a.estEgal(b);
              }
              
              bool operator!=(Duree const& a, Duree const& b){
                  return !(a == b);
              }
              
              bool operator<(Duree const& a, Duree const& b){
                  return a.estPlusPetit(b);
              }
              
              bool operator>(Duree const& a, Duree const& b){
                  return !(a < b || a == b);
              }
              
              
              bool operator<=(Duree const& a, Duree const& b){
                  return !(a > b);
              }
              
              bool operator>=(Duree const& a, Duree const& b){
                  return !(a < b);
              }

              voila le code, et voici comment j'ai tester 

              Duree a(2, 50, 15), b(2, 40 , 15);
                  if(a <= b){
                      cout << "true" << endl;
                  }else{
                      cout << "false" << endl;
                  }

              avec 

              return (a<b || a==b)

              ca fait toujours true


              -
              Edité par NewShacha1 1 février 2019 à 10:40:32

              • Partager sur Facebook
              • Partager sur Twitter
                1 février 2019 à 10:45:47

                Quand on compile ton code :

                main.cpp: In member function 'bool Duree::estPlusPetit(const Duree&) const':
                main.cpp:49:1: warning: control reaches end of non-void function [-Wreturn-type]
                
                 }
                 ^

                Il ne faut pas ignorer les warnings, surtout quand il s'agit d'un return manquant.

                • Partager sur Facebook
                • Partager sur Twitter

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

                  1 février 2019 à 10:53:48

                  ok, je verifie, mais je veux surtout savoir pourquoi 
                  return (a<b || a==b)
                  ne fonctionne pas correctement
                  • Partager sur Facebook
                  • Partager sur Twitter
                    1 février 2019 à 10:55:51

                    Parceque
                    a<b
                    utilise
                    estPlusPetit
                    qui est une fonction, comme l'a indiqué Ksass, qui à un problème de return et qui dans certains cas te renverra un truc absurde.

                    • Partager sur Facebook
                    • Partager sur Twitter

                    « Je n’ai pas besoin de preuve. Les lois de la nature, contrairement aux lois de la grammaire, ne permettent aucune exception. »
                    D. Mendeleïev

                      1 février 2019 à 11:05:28

                      Ok, merci, je vais marquer comme résolu et continuer le cours :D J'ai rectifier la methode estPlusPetit et ca fontionne bien maintenant.

                      -
                      Edité par NewShacha1 1 février 2019 à 11:11:35

                      • Partager sur Facebook
                      • Partager sur Twitter
                        1 février 2019 à 11:30:49

                        NewShacha1 a écrit:

                        Ok, merci, je vais marquer comme résolu et continuer le cours :D

                        Tu ferais mieux d'en changer, en particulier parce que la partie objet du cours de C++ d'OC, c'est la fête du n'importe quoi.

                        • Partager sur Facebook
                        • Partager sur Twitter

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

                          1 février 2019 à 11:34:40

                          Les trois que j'ai cité en haut sont mieux. En gratos, je conseille de suivre celui de Zeste de Savoir et de paufiner avec le cours de GB. En tout cas, pour l'instant pour la partie objet, je crois qu'il n'y a que les bouquins anglais (genre celui que j'ai cité) qui sont corrects.

                          • Partager sur Facebook
                          • Partager sur Twitter

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

                          problème avec bool operator<= en c++

                          × 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