d

d - C++ - Programmation

Marsh Posté le 05-01-2017 à 03:31:02    

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;

Reply

Marsh Posté le 05-01-2017 à 03:31:02   

Reply

Marsh Posté le 05-01-2017 à 10:03:34    

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)
Reply

Marsh Posté le 05-01-2017 à 10:48:02    

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 Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 05-01-2017 à 11:27:29    

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
Reply

Marsh Posté le 05-01-2017 à 11:46:04    

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)
Reply

Marsh Posté le 05-01-2017 à 12:13:26    

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
Reply

Marsh Posté le 05-01-2017 à 12:23:05    

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)
Reply

Marsh Posté le 05-01-2017 à 13:18:12    

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


---------------
sheep++
Reply

Marsh Posté le 05-01-2017 à 13:45:11    

Juste un bête Factory Method :spamafote:


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 05-01-2017 à 14:44:57    

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
Reply

Marsh Posté le 05-01-2017 à 14:44:57   

Reply

Marsh Posté le 05-01-2017 à 16:17:38    

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)
Reply

Marsh Posté le 05-01-2017 à 18:52:04    

les étoiles c'est mal  :o

Reply

Marsh Posté le 05-01-2017 à 19:50:15    

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
Reply

Marsh Posté le 06-01-2017 à 03:18:45    

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

Reply

Marsh Posté le 06-01-2017 à 03:23:54    

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

Reply

Marsh Posté le 09-01-2017 à 14:08:15    

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)
Reply

Marsh Posté le 09-01-2017 à 14:31:08    

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
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed