// Programación en C++ para Ingenieros, Ed. Thomson Paraninfo, 2006 // Capitulo 6: Tipos Estructurados // Programa que dada una frase con como máximo N caracteres, // sin signos de puntuación y acabada en punto '.', // indica si es o no un palíndromo. #include <iostream> #include <string> using namespace std; // Definición de constantes const int N = 250; // Consideramos que la frase (sin signos de puntuación) // tiene un maximo de 250 caracteres sin contar espacios // Programa principal int main() { // Declaracion de variables char frase[N+1]; // Frase sin contar espacios, pero con el punto '.' bool ser_pal = true; // Valdrá falso si la frase no es un palíndromo. int i = 0, n; // i: Índice que recorre la frase. // n: Longitud de la frase. // Leemos la frase carácter a carácter sin contar los espacios. // Obsérvese que no se lee la frase usando cin.getline, // cin.getline( frase, 250, '.' ); // porque no tenemos que considerar los espacios entre las palabras. cout << "Escribe una frase acabada en punto:" << endl; cin >> frase[i]; while ( frase[i] != '.' ) cin >> frase[++i]; // Ponemos el centinela '\0' para poder usar la función strlen() frase[i] = '\0'; n = strlen(frase); // Comprobamos si la frase es un palíndromo utilizando el esquema de búsqueda i = 0; while ( ( i < n / 2 ) && ( ser_pal ) ) { if ( frase[i] != frase[n-i-1] ) ser_pal = false; else i++; } if ( ser_pal ) cout << "La frase es un palindromo." << endl ; else cout << "La frase no es un palindromo." << endl ; return 0; }