Besoin de conseil

Résolu/Fermé
Thewolf76 Messages postés 37 Date d'inscription lundi 2 septembre 2013 Statut Membre Dernière intervention 31 décembre 2013 - 30 sept. 2013 à 17:57
Thewolf76 Messages postés 37 Date d'inscription lundi 2 septembre 2013 Statut Membre Dernière intervention 31 décembre 2013 - 2 oct. 2013 à 21:33
Bonjour j'apprend depuis peut la programmation sous C++, et j'etudie a l'heure actuelle les conditions y comprit les boucles. J'essaie de m'exercer en développant différentes idées. Malheuresement meme si mon programme marche je ne suis pas sur que la facon dont il a était construit est fiable et correct. Pouvez vous m'indiquez ce que vous pensez et les changements à faire, je vous remercie d'avance.

int main()
{
string motDePasse("qsdfg"); // mot de passe différent pour entrer dans la boucle

cout << "Quelle est le mot de passe?" << endl; // énonciation
cin >> motDePasse;

if (motDePasse == "azerty"){} // si conditions vérifié passer à la suite

else // si conditions non vérifié
{
while (motDePasse != "azerty") // répétée jusqu'a ce que la conditions soit vérifié
{
cout << "Le mot de passe entrer est incorrect veuillez réessayer" << endl;
cin >> motDePasse;
}
}

cout << "Bravo le mot de passe est correct" << endl;

}

Le programme fonctionne et me redemande de répeter le mot de passe jusqu'a ce qu'il soit correct

4 réponses

thedebian Messages postés 2 Date d'inscription mardi 1 octobre 2013 Statut Membre Dernière intervention 1 octobre 2013
1 oct. 2013 à 14:03
Salut,
En passant outre les fautes d'orthographe ... Ton if est inutile, tu peux simplifier ta boucle :


string motDePasse = "";

cin >> motDePasse;

while( "azerty" != motDePasse ) {
cout << "Le mot de passe entré est incorrect veuillez réessayer" << endl;
cin >> motDePasse;
}

cout << "Bravo le mot de passe est correct" << endl;
0
Thewolf76 Messages postés 37 Date d'inscription lundi 2 septembre 2013 Statut Membre Dernière intervention 31 décembre 2013 176
1 oct. 2013 à 14:41
Je comprend ta logique je t'en remercie, et je m'excuse pour mes fautes d'orthographes. Je pensé si ont utilise une boucle do..while, la boucle passe au moins une fois donc pas besoin d'utiliser de valeur négatif pour entrer dans la boucle non?
0
thedebian Messages postés 2 Date d'inscription mardi 1 octobre 2013 Statut Membre Dernière intervention 1 octobre 2013
Modifié par thedebian le 1/10/2013 à 14:55
Oui, mais tu auras besoin d'une variable en plus afin de stocker le fait que ce soit la première occurrence de la boucle (pour ne pas afficher "Le mot de passe entré etc..." à la première itération ).
L'autre solution avec un do/while serait de faire un double check, mais les deux solutions ne sont pas très élégantes :
Solution1 :

string motDePasse = "";
bool isFirstOccurence = true;

do {

if( !isFirstOccurence ) {
cout << "Le mot de passe entré est incorrect veuillez réessayer" << endl;
}
cin >> motDePasse;

isFirstOccurence = false

} while( "azerty" != motDePasse );

Solution 2:


string motDePasse = "";

do {

cin >> motDePasse;

if( "azerty" != motDePasse ) {
cout << "Le mot de passe entré est incorrect veuillez réessayer" << endl;
}

} while( "azerty" != motDePasse );

0
Thewolf76 Messages postés 37 Date d'inscription lundi 2 septembre 2013 Statut Membre Dernière intervention 31 décembre 2013 176
2 oct. 2013 à 21:33
D'accord, je te remercie pour tes précieux conseils!
0