Boucle while et break

Résolu
BIOoOAG123 - 21 avril 2013 à 20:34
 BIOoOAG123 - 21 avril 2013 à 22:14
Bonjour à tous, je suis nouveau sur le forum c++, et je débute donc! :)
je fais déjà pas mal de VBA et SQL (bon ok le SQL ça n'a rien avoir avec le c++ mais c'est déjà bien!) :)

Je ne comprend pas pourquoi la variable reponse n'est pas prise en compte à la fin de la boucle while, quand je demande à l'utilisateur de me la mettre à jour par un cin(donc du coup que la condition while (reponse == "yes" || "Yes"); soit vraie et qu'il me relance la boucle, la il la quitte), et pourquoi il lit cette ligne à chaque fois?
if (reponse == "no" || "No")
        {
            break;
        }


Voici mon code complet (c'est juste un exercice).

#include 
#include <vector>
#include <string>

using namespace std;





int main()
{
    vector tableau(1);

    string reponse("test");
    cout << "Avez vous de note a rentrer (Yes, no)?" << endl;
    cin >> reponse;

    do
    {
        cout << "Entrez votre note : " << endl;
        double note(0);
        cin >> note;
        tableau.push_back(note);

        cout << "Avez vous des notes a rentrer (Yes, no)?" << endl;
        cin >> reponse;
        cout << endl << reponse;

        if (reponse == "no" || "No")
        {
            break;
        }

    } while (reponse == "yes" || "Yes");


    for(int i(0); i<tableau.size(); ++i)
    {
        double totalNote;
        totalNote += tableau[i];
        double moyenne(0);
        moyenne = totalNote / tableau.size();
        cout << moyenne;
    }


return 0;

}


Merci d'avance

2 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
21 avril 2013 à 21:19
Bonjour.

C'est tout simplement que ça ne s'écrit pas comme cela.
- if (reponse "no" || "No")> if (reponse == "no" || reponse == "No"). Si tu écris "chaine", ça sera toujours vrai, car l'adresse de la chaîne étant existante, elle est différente de 0, et donc considérée comme vraie. Tu écrivais donc: if (condition || true), ce qui est toujours vrai.

Quelques conseils supplémentaires:
- Évite les "using namespace", voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace
- Plutôt que: int i(0), tu peux écrire directement: int i = 0
- vector tableau(1); => Pourquoi initialiser sa taille à 1 ? J'écrirais plutôt: std::vector tableau;

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
3
Ah super! :)
Je mis penche un peu plus demain entre midi et deux concernant les "using namespace"

Bonne nuit et Merci beaucoup en tout cas!
0
Rejoignez-nous