Boucle et chaines de caracteres

Résolu/Fermé
BlueStar21 Messages postés 8 Date d'inscription samedi 16 janvier 2016 Statut Membre Dernière intervention 27 décembre 2016 - 16 janv. 2016 à 13:36
BlueStar21 Messages postés 8 Date d'inscription samedi 16 janvier 2016 Statut Membre Dernière intervention 27 décembre 2016 - 16 janv. 2016 à 14:32
Bonjour,
Je suis débutante en C++. J'ai tenté de créer un petit programme demandant à l'utilisateur de saisir un mot de passe. Il doit le saisir à nouveau et le programme vérifie que les deux saisies se correspondent. Si le mot de passe est incorrect, le programme affiche un message d'erreur et redemande à l'utilisateur de le saisir.

Lorsque je tente de compiler le programme, le logiciel affiche une erreur au niveau de la ligne "if":

#include <iostream>
using namespace std;
#include <string.h>


int main ()
{

string motpasse ("rien");
cout<<" rentrez un mot de passe valide "<<endl;
cin>>motpasse;


string MotPasse ("rien");
cout << "Veuillez donner le mot de passe"<<endl;
cin>>MotPasse;

motpasse=MotPasse;

if (motpasse.compare(MotPasse)) != 0)
{
while (!(cin>>MotPasse))
cerr<<"Erreur. Retapez le mot de passe. "<<endl;
cin>>MotPasse;
}

else

{
cout<<"Bienvenue"<<endl;
}

return 0;
}

J'avais au début tenté de créer une unique boucle while à la place de la structure if ... else ... (l'idéal d'après moi) , mais sans succès.

Merci d'avance de votre aide !

1 réponse

SypayV Messages postés 6583 Date d'inscription vendredi 28 décembre 2007 Statut Contributeur Dernière intervention 19 février 2023 449
Modifié par SypayV le 16/01/2016 à 13:41
Bonjour,

Vous avez une parenthèse fermante en trop dans votre if, juste après MotPasse.

Vous n'êtes pas obligé de faire while (!(cin>>MotPasse))
cin est déjà une opération blocante.

Edit : #include <string.h> -> #include <string>

Par ailleurs, vous faites motpasse=MotPasse.
Donc les deux entrées seront toujours égales à partir de cette ligne.

Musicalement,
SypayV.
1
BlueStar21 Messages postés 8 Date d'inscription samedi 16 janvier 2016 Statut Membre Dernière intervention 27 décembre 2016
16 janv. 2016 à 14:32
Bonjour,

Merci de votre réponse. Cependant, ne suis-je pas obligée de créer deux variables contenant le même mot de passe, afin que l'une serve à comparer l'autre (celle que l'utilisateur entre au clavier et qui doit être la même) ?

Je pense que le problème dans l'exécution de mon code vient de là: je viens d'effectuer quelques tests, et j'ai pu constater que même si les deux mots de passe ne concordent pas, le message "Bienvenue !" s'affiche à l'écran ...
0