Boucle et chaines de caracteres
Résolu
BlueStar21
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
BlueStar21 Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
BlueStar21 Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
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 !
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 !
A voir également:
- Boucle et chaines de caracteres
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Caractères ascii - Guide
- Caractères spéciaux - Guide
- Caractères spéciaux mac - Guide
- Caracteres speciaux - Guide
1 réponse
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.
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.
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 ...