Problème avec mes variables (C++)

Bonjour,

Je vais commencer en disant que cela fait quoi, 5 ans que je n'ai pas programmé, c'est donc peut-être une petite niaiserie. Donc, voici mon problème : Mon programme me dit que j'aurais un problème avec mes variables et avec mes conditions IF (le ==). Voici mon code (lisez les commentaires dans mon programme, c'est là que je crois qu'il y a des problèmes.) :

// pour les include, je sais que j'en ai trop pour rien, mais je m'habitue à les insérer pour ne pas les oublier plus tard

#include <iostream>
#include <cstdlib>
#include <string>

using namespace std;

void main ()
{

/*Mes variables, je les ai essayé de la façon suivante, j'ai essayé avec string et int et rien ne foncitonne (comme j'ai dit, je suis rouillé, donc c'est peut-être juste une petite erreur)

char nom[30];
char etat[10];
char raison[10];

cout << "Bonjour, quel-est votre nom?" << endl;
cin >> nom;
cout << endl;
cout << "Hey bien, bonjour " << nom << "Comment allez-vous?" << endl;
cin >> etat;

//à partir d'ici, on dirait qu'il y a un problème aussi, comme si mon == ne fonctionne pas.)

if (etat=="bien")
{
cout << "Cool, pourquoi vous allez bien ainsi?" << endl;
cin >> raison;

if (raison=="parce que")
cout << "Vous pouvez me parler, mais je dois partir, au revoir!" << endl;
else
cout << "Ah, au revoir" << endl;
}
else
{
cout << "Ahh, mais que ce passe--il??" << endl;
cin >> raison;

if (raison=="rien")
cout << "Vous ne voulez pas parler, donc je vais y aller" << endl;
else
cout << "Ahhh, c'est triste :(" << endl;
}

system ("pause");
return 0;
}

Merci

Max
Configuration: Windows 7
Safari 532.5

6 réponses

  1. Bonjour

    Effectivement, deux tableaux de char (car ce ne sont pas des classes String) se comparent avec la fonction strcmp, pas avec ==
    0
    1. ok, je viens de faire un changement et la, ca fonctionne. MAIS, car il y a un gros mais, lorsque je demande comment ca va, que je répond bien ou mal, ca me menne au else (Ahh, mais que ce passe-t-il).

      max
      0
      1. Contributeur
        la fonction strcmp renvoie 0 quand les chaines de charactère sont identiques, et quelque chose d'autre quand c'est différent

        if (raison=="rien")

        =>

        if (!strcmp(raison,"rien"))

        c'est un peu le piège cette fonction ;)
        0
        1. Tu as peut-être inversé la condition, mais ça devrait quand même changer entre "bien" et "mal".
          Je ne connais pas le C++, mais cin ne garderait-il pas un caractère de fin de fin de ligne ?
          après ton cin >> etat; , ajoute cout<< strlen(raison) pour voir si tu as bien le nombre de caractères attendu
          0
          1. non, la valeur saisie par cin est sans le saut de ligne qu'on fait en appuyant sur Entrée
            0
        2. Contributeur
          peux tu nous coller ton code comme tu l'a fait avec les strcmp, mais en utilisant les balises "code" (4 ° bouton, après gras, italique, souligné), histoire de garder l'indentation du texte... c'est plus facil à lire ;)
          0
          1. Contributeur
            Bonjour,

            Pourquoi programme en C++ et s'embêter à utiliser les tableaux de char ?
            De plus en utilisant les string tu pourras utiliser if (raison=="rien"). Et les entrées seront plus sécurisées.
            0