Problème code c++

Le problème exposé dans ce sujet a été résolu.

Bonjour, je suis en train de suivre le cours de c++ moderne et pour m’entrainer avec les tableaux/algorithmes j’ai fait l’exercice proposé pas le cours qui consiste en disant si un mot est palindrome où non, mais en version plus poussé. En gros je demande des mots jusqu’à ce qu’il entre le mot "fini", ensuite une boucle for va calculer grâce à la fonction std::equal si le mot est pareil dans les deux sens, et si oui il va ajouter le mot vrai à un tableau string, ensuite, une autre boucle for va récapituler le tout. Seul problème, quelque soit le mot entré ça me met toujours que le mot est palindrome, et je ne comprend pas pourquoi… Enfin bref, un code valant mieux que 1000mots voici le mien :

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <windows.h>
#define NOMINMAX 1

using std::cout;
using std::cin;
using std::string;
using std::vector;
using std::equal;
using std::begin;
using std::end;
using std::rbegin;
using std::rend;

int main()
{
    SetConsoleOutputCP(1252);
    bool reJouer(false);

    do
    {
        string motProvisoire;
        vector<string> mots;
        vector<bool> reponse;
        string reJouer2;

        cout << "Bienvenue dans ce programme de détection de mots palidromes. \n Principe et fonctionnement : \n - Un mot palindrome est un mot qui se lit pareil dans les deux sens (exemple : \"kayak\")."
            "\n - Vous pouvez entrer autant de mots que vous voulez. \n - Pour arrêter, entrer le mot \"fini\". \n - Vous aurez le résultat pour chaque mot. \n \n";

        do
        {
            cin >> motProvisoire;

            if (!(motProvisoire == "fini"))
            {
                mots.push_back(motProvisoire);
            }
        } while (!(motProvisoire == "fini"));

        cout << "\n";

        for (auto const mot : mots)
        {
            if (equal(begin(mot), end(mot), rbegin(mot), rend(mot)) == 1)
            {
                reponse.push_back(true);
            }
            else
            {
                reponse.push_back(false);
            }
        }

        int i(0);
        for (auto const mot : mots)
        {
            if (reponse[i] == true)
            {
                cout << "Le mot " << mot << " est palindrome \n";
            }
            else
            {
                cout << "Le mot " << mot << " n'est pas palindrome \n";
            }
        }

        cout << "\nVoulez vous réesayer? \n";
        cin >> reJouer2;
            if (reJouer2 == "oui")
            {
                reJouer = true;
            }

    } while (reJouer);
}

Quelqu’un pourrait donc m’expliquer pourquoi le code me dit toujours que tout les mots entrés sont palindrome?

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte