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. 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.
    1. 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 ;)
      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
        1. non, la valeur saisie par cin est sans le saut de ligne qu'on fait en appuyant sur Entrée
      2. 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 ;)
        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
          1. Bonjour

            Effectivement, deux tableaux de char (car ce ne sont pas des classes String) se comparent avec la fonction strcmp, pas avec ==