2015-07-22 3 views
-1

Salut mon essayer de créer une fonction qui permet à l'utilisateur de savoir si le mot entré est un palindrome (est le même épelé à l'envers, ex: kayak). C'est la fonction que je suis venu avec, mais pour une raison quelconque, la fonction renvoie toujours faux.La fonction Bool retourne toujours false

#include <iostream> 
#include <cctype> 
using namespace std; 

bool compare(string str2) 
{ 
    int first = 0, mid, last = (str2.size() - 1); 

    while(first < last) 
    { 
     if(first == last) 
     { 
      first++; 
      last--; 
     } 
     else return(false); 
    } 
    return(true); 
} 

int main() 
{ 
    string pal; 

    cout <<"Enter your single word palindrome: "; 
    getline(cin,pal); 

    if(compare(pal) == true)cout << pal <<" is a palindrome.\n"; 
    else     cout << pal <<" is not a palindrome.\n"; 

    return(0); 
} 
+2

si (premier == dernier) -> premier et le dernier sont les chiffres d'index, vous devez comparer les caractères –

+0

où vous avez votre boucle while, votre cas est erroné. vous avez besoin de 'str2 [first] == ​​str2 [last]' car vous vérifiez que 'first' est moins que' last', et que 'first' est le même que' last', ce qui ne peut pas être vrai. –

+2

Voulez-vous dire 'str2 [first] == ​​str2 [last]'? – Ben

Répondre

2

Vous n'êtes pas en train de faire une comparaison de caractères, simplement comparer les indices first et last - ils ne vous correspondent pas de retour si faux.

0

si (premier == dernier) {} Ceci est l'erreur.

1

Après le code ci-dessous, si nous supposons last est supérieur à 0, while(first < last) est true suivie if(first == last) étant false et donc la fonction retourne false. Je suppose que vous pourriez vouloir comparer les caractères au lieu des indices.

int first = 0, mid, last = (str2.size() - 1); 

while(first < last) 
{ 
    if(first == last) 
    { 
     first++; 
     last--; 
    } 
    else return(false); 
} 
0

Dans votre code, vous devez comparer char pas int. Donc, essayez ceci:

bool compare(string str2) 
{ 
    int first = 0, mid, last = (str2.size() - 1); 

    while(first] < last) 
    { 
     if(str2[first] == str2[last]) 
     { 
      first++; 
      last--; 
     } 
     else 
      return(false); 
    } 
    return(true); 
}