Problème avec mes variables (C++)

Fermé
Utilisateur anonyme - 5 févr. 2010 à 14:23
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 6 févr. 2010 à 00:33
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

6 réponses

Bonjour

Effectivement, deux tableaux de char (car ce ne sont pas des classes String) se comparent avec la fonction strcmp, pas avec ==
0
Utilisateur anonyme
5 févr. 2010 à 14:48
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
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 193
5 févr. 2010 à 15:16
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
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
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 663
5 févr. 2010 à 16:03
non, la valeur saisie par cin est sans le saut de ligne qu'on fait en appuyant sur Entrée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 193
5 févr. 2010 à 16:06
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
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
6 févr. 2010 à 00:33
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