Vérification de palindromes dysfonctionnelle

Résolu/Fermé
Evenkore Messages postés 17 Date d'inscription dimanche 16 mars 2014 Statut Membre Dernière intervention 2 août 2014 - 22 mars 2014 à 13:34
Crazy Legs Messages postés 635 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 27 septembre 2016 - 24 mars 2014 à 16:47
Bonjour,
alors voilà : je m'essaie au Project Euler https://projecteuler.net/, et je voudrais coder une fonction renvoyant TRUE si un nombre donné est un palindrome (s'il se lit de la même façon dans les deux sens) pour une partie d'un programme censé résoudre le problème n°4. Je sais cependant que le plus grand palindrome en-dessous de 999*999 est 997799, or quand je passe ce nombre à ma fonction, elle me renvoie FALSE. Aidez-moi please :(

Code de la fonction :
bool vPalind(int nb) {
    stringstream ss;
    ss << nb;
    string st(ss.str()), sv;
    int i(st.length());
    while (i >= 0) {
        sv += st[i];
        i--;
    }
    return (sv == st);
}

1 réponse

Crazy Legs Messages postés 635 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 27 septembre 2016 98
24 mars 2014 à 16:47
Salut,

Est-ce que ça serait pas plus propre, voire même plus rapide de travailler avec des nombres (int) ?
Si tu as utilisé des strings pour compter le nombre de chiffres, utilise plutôt la fonction atoi.

Est-ce que tu peux mettre l'énoncé de l'exercice 4 (pas envie de m'inscrire).
0