Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1165 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  d

 

Sujet(s) à lire :
 

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

d

n°2294391
cinekb
im so paid
Posté le 05-01-2017 à 03:31:02  profilanswer
 

bonjour une amie ma montrer ce petit cod&e a vue d'œil y a aucun problème mais quand tu l'exécute sa fait ce que  tu voudrais qu'il fasse  
#include <iostream>
 
using namespace std;
int main()
{
    string race,europeen,americain,latino,asiatique,africain;
string noir,blanche,jaune;
 
    cout << "vous etes de quel race" << endl;
    cin>>race;
    if ((race==noir))
    {  
        cout<<"vous etes de race noir"<<endl;
    }
        else if ((race==blanche))
    {
        cout<<"vous etes de race blanche"<<endl;
    }
    else if ((race==jaune))
    {
    cout<<"vous etes latino ou asiatique"<<endl;
    }
    return 0;

mood
Publicité
Posté le 05-01-2017 à 03:31:02  profilanswer
 

n°2294398
Harkonnen
Modérateur
SQL is evil
Posté le 05-01-2017 à 10:03:34  profilanswer
 

1 - "Ca ne fait pas ce qu'il faudrait qu'il fasse"... Ca serait bien de dire ce qu'il faudrait qu'il fasse et la nature de l'erreur  
 
2 - Utilise les balises [code] pour poster du code  
 
3 - Change le titre de ton topic qui ne ressemble à rien  
 
4 - En ce qui concerne ton programme :  
 
-> Tu as oublié d'inclure <string>, du coup ">>" est indéfini  
-> Tu n'as pas initialisé tes chaines "noir", "blanche" et "jaune", donc tu compares l'entrée à rien du tout.  
-> Utilise std::string.compare() pour comparer des chaines de caractères  
-> Evite "using namespace std;"


---------------
J'ai un string dans l'array (Paris Hilton)
n°2294399
rufo
Pas me confondre avec Lycos!
Posté le 05-01-2017 à 10:48:02  profilanswer
 

Plutôt que faire autant de if/else, préférer un switch.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2294401
TotalRecal​l
Posté le 05-01-2017 à 11:27:29  profilanswer
 

J'aime bien le "une copine m'a montré ce bout de code" alors qu'il y a deux jours c'était "aidez moi à faire mes devoirs" et que quelqu'un lui a fait remarquer que ça n'est pas en accord avec les règles du forum ( http://forum.hardware.fr/hfr/Progr [...] 5589_1.htm ). C'est un petit futé ce cinekb [:slackerbitch]  
 
A part ça ça serait bien de commencer à mettre des vrais titres à tes topics :o


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2294403
Harkonnen
Modérateur
SQL is evil
Posté le 05-01-2017 à 11:46:04  profilanswer
 

rufo a écrit :

Plutôt que faire autant de if/else, préférer un switch.


Le switch, c'est pour les faibles :o

Code :
  1. #include <iostream>
  2. #include <string>
  3.  
  4.  
  5. class Color
  6. {
  7. public:
  8.     virtual void WriteColor() = 0;
  9. };
  10.  
  11. class Noir : public Color
  12. {
  13. public:
  14.     void WriteColor()
  15.     {
  16.         std::cout << "Vous êtes de race noire";
  17.     }
  18. };
  19.  
  20. class Blanche : public Color
  21. {
  22. public:
  23.     void WriteColor()
  24.     {
  25.         std::cout << "Vous êtes de race blanche";
  26.     }
  27. };
  28.  
  29. class Jaune : public Color
  30. {
  31. public:
  32.     void WriteColor()
  33.     {
  34.         std::cout << "Vous êtes latino ou asiatique";
  35.     }
  36. };
  37.  
  38. class ColorFactory
  39. {
  40.     private:
  41.         std::string race;
  42.     
  43.     public:
  44.         ColorFactory(std::string color)
  45.         {
  46.             race = color;
  47.         }
  48.  
  49.         Color* getColor()
  50.         {
  51.             if (race.compare("noire" ) == 0)
  52.             {
  53.                 return new Noir();
  54.             }
  55.             if (race.compare("blanche" ) == 0)
  56.             {
  57.                 return new Blanche();
  58.             }
  59.             if (race.compare("jaune" ) == 0)
  60.             {
  61.                 return new Jaune();
  62.             }
  63.         }
  64. };
  65.  
  66.  
  67.  
  68. int main()
  69. {
  70.     std::string race;
  71.  
  72.     std::cout << "Vous êtes de quelle race ?" << std::endl;
  73.     std::cin >> race;
  74.  
  75.     ColorFactory *factory = new ColorFactory(race);
  76.     Color *color = factory->getColor();
  77.     color->WriteColor();
  78.  
  79.     return 0;
  80. }


---------------
J'ai un string dans l'array (Paris Hilton)
n°2294407
TotalRecal​l
Posté le 05-01-2017 à 12:13:26  profilanswer
 

C'est beau :o
Mais en l'état si tu saisis un truc différent des valeurs acceptées, ça doit réagir légèrement différemment de la tentative du premier post :D


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2294408
Harkonnen
Modérateur
SQL is evil
Posté le 05-01-2017 à 12:23:05  profilanswer
 

Vu que je lui ai fait son taf (qu'il aura sans doute du mal à expliquer à son prof :D), je pense qu'il peut bien se sortir les doigts du cul
pour rajouter un fallthrough hein :o


Message édité par Harkonnen le 05-01-2017 à 12:23:23

---------------
J'ai un string dans l'array (Paris Hilton)
n°2294409
h3bus
Troll Inside
Posté le 05-01-2017 à 13:18:12  profilanswer
 

Tain la POO dans ce qu'elle a de plus sombre...


---------------
sheep++
n°2294410
Harkonnen
Modérateur
SQL is evil
Posté le 05-01-2017 à 13:45:11  profilanswer
 

Juste un bête Factory Method :spamafote:


---------------
J'ai un string dans l'array (Paris Hilton)
n°2294413
TotalRecal​l
Posté le 05-01-2017 à 14:44:57  profilanswer
 

Je pense que h3bus veut dire que c'est un peu overkill pour juste afficher une couleur :D
Imagine s'il fallait gérer toute la palette, ça ferait beaucoup de classes :D


Message édité par TotalRecall le 05-01-2017 à 14:45:27

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
mood
Publicité
Posté le 05-01-2017 à 14:44:57  profilanswer
 

n°2294414
Harkonnen
Modérateur
SQL is evil
Posté le 05-01-2017 à 16:17:38  profilanswer
 

Moi je propose une solution, OP est libre de faire comme il veut [:gidoin]
(une fois qu'il aura corrigé les erreurs que je lui décrit dans ma première réponse [:petrus75])
 
Et je viens de me rendre compte que j'ai oublié de deleter la mémoire allouée par mes objets color et colorfactory... 10 ans sans faire de C++, ça marque [:petrus75]


---------------
J'ai un string dans l'array (Paris Hilton)
n°2294424
Mackila
Posté le 05-01-2017 à 18:52:04  profilanswer
 

les étoiles c'est mal  :o

n°2294428
theshockwa​ve
I work at a firm named Koslow
Posté le 05-01-2017 à 19:50:15  profilanswer
 

Harkonnen a écrit :

Moi je propose une solution, OP est libre de faire comme il veut [:gidoin]
(une fois qu'il aura corrigé les erreurs que je lui décrit dans ma première réponse [:petrus75])

 

Et je viens de me rendre compte que j'ai oublié de deleter la mémoire allouée par mes objets color et colorfactory... 10 ans sans faire de C++, ça marque [:petrus75]


std::unique_ptr peut t'aider :o

 

Edit : même si dans ton cas, ce serait sans doute mieux d'avoir préalloué tes instances dans ta factory et d'utiliser des std::shared_ptr, même si l'implémentation standard est une implémentation de natas.

Message cité 1 fois
Message édité par theshockwave le 05-01-2017 à 19:51:11

---------------
last.fm
n°2294435
cinekb
im so paid
Posté le 06-01-2017 à 03:18:45  profilanswer
 

jai pas fait poo d'abord merci a tous le switch fait l'affaire

n°2294436
cinekb
im so paid
Posté le 06-01-2017 à 03:23:54  profilanswer
 

TotalRecall je jure que c'est pas un devoir comme tu le pense je n'arrivais pas a comprendre ce qui ne marchais pas et j'ai pas du demander de résoudre mes devoir

n°2294613
Harkonnen
Modérateur
SQL is evil
Posté le 09-01-2017 à 14:08:15  profilanswer
 

Mackila a écrit :

les étoiles c'est mal  :o


ouais ouais, j'aurais pu utiliser des const& machin toussa, mais j'ai eu la flemme :o

 
theshockwave a écrit :


std::unique_ptr peut t'aider :o

 

Edit : même si dans ton cas, ce serait sans doute mieux d'avoir préalloué tes instances dans ta factory et d'utiliser des std::shared_ptr, même si l'implémentation standard est une implémentation de natas.


ok, donc en fait mon retard sur le C++ est encore pire que ce que je croyais [:transparency]
c'est vraiment un langage de natas aussi :o


Message édité par Harkonnen le 09-01-2017 à 14:08:26

---------------
J'ai un string dans l'array (Paris Hilton)
n°2294614
TotalRecal​l
Posté le 09-01-2017 à 14:31:08  profilanswer
 

cinekb a écrit :

TotalRecall je jure que c'est pas un devoir comme tu le pense je n'arrivais pas a comprendre ce qui ne marchais pas et j'ai pas du demander de résoudre mes devoir


Hello,

 

T'inquiète je plaisantais, même si tu étais à nouveau bloqué sur un devoir tel que ton post était formulé cette fois-ci ça aurait été vu que tu fournissais un exemple de code. On n'a aucun souci avec l'aide aux devoirs, l'important c'est de montrer qu'avant de demander de l'aide tu as aussi cherché par toi même.

 

La seule chose qui manquait c'est l'explication claire de pourquoi il ne faisait pas ce que tu attendais, plus des détails sur la forme comme les balises [ cpp] ou l'absence de titre !


Message édité par TotalRecall le 09-01-2017 à 14:31:21

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  d

 

Sujets relatifs
Plus de sujets relatifs à : d



Copyright © 1997-2016 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR