Voilà je dois faire un petit programme tout simple qui me dit si telle phrase est un palindrome ('alila est un palindrome mais également 'il était ti ATeli'). J'ai juste un problème avec lmes accents à,â,Ä ..)
pour ce faire j'analyse mastring à l'aide de deux pointeur (un pointeur pointe vers le premier caractère et le second sur le dernier je comprare les deux caractères si les deux sont différent de ' ')
Code :
- bool EstUnPalindrome(string str, bool& palindromepaire,int& caractere_deb_error , int& caractere_fin_error)
- {
- bool estunpalindrome = true ;
- string::const_iterator it_car_deb = str.begin() ;
- string::const_iterator it_car_fin = str.end()-1 ;
- int char_number_deb = 0 ;
- int char_number_fin = str.length()-1 ;
- signed char char_analysed ;
- unsigned char lowercase_deb ;
- unsigned char lowercase_fin ;
- signed char char_compared ;
- do
- {
- char_analysed = str[char_number_deb] ;
- switch (char_analysed)//(*it_car_deb)
- {
- case 'Ä':
- lowercase_deb = 'a' ;
- break ;
- case 'ä':
- lowercase_deb = 'a' ;
- break ;
- case 'à':
- lowercase_deb = 'a' ;
- break ;
- case 'Ç':
- case 'ç':
- lowercase_deb = 'c' ;
- break ;
- case 'É':
- case 'È':
- case 'Ê':
- case 'Ë':
- case 'é':
- case 'è':
- case 'ê':
- case 'ë':
- lowercase_deb = 'e' ;
- break ;
- case 'Ï':
- case 'Î':
- lowercase_deb = 'i' ;
- break ;
- case 'ï':
- case 'î':
- lowercase_deb = 'i' ;
- break ;
- case 'Ö':
- case 'ö':
- lowercase_deb = 'o' ;
- break ;
- case 'Ü':
- case 'Û':
- case 'ü':
- case 'û':
- lowercase_deb = 'u' ;
- break ;
- default : lowercase_deb = tolower(str[char_number_deb]);//(*it_car_deb);
- }
- //...
- }
- while ( (char_number_deb<char_number_fin) && (estunpalindrome) ) ; //(it_car_deb<it_car_fin)
|
Le problème c'est que si str = "àdedA", le première fois que je vais dans mon switch, il va directement dans le cas default
Quelqu'un peut il m'aider car la manipulation de chîane de caractère (surtout les problèmes d'accents c'est pas ce qui me passionne dans la programmation. Merci