Comprobar un palíndromo en C y C++
En esta lección vas a comprobar si una palabra se lee igual en los dos sentidos comparando los caracteres simétricos.
Introducción
Un palíndromo es una cadena que no cambia al invertir el orden de sus caracteres, como "level" o "radar". Para comprobarlo, se compara el primer carácter con el último, el segundo con el penúltimo, y así hasta llegar al medio.
Puntos importantes
- Activa los avisos del compilador (compiler warnings) y corrígelos todos.
- Entiende bien el tipo y la vida útil (lifetime) de cada valor.
- Comprueba siempre los datos de entrada y los límites de los índices de los arreglos.
Ejemplos de código C y C++
#include <stdio.h>
#include <string.h>
int main(void) {
const char *text = "level"; size_t length = strlen(text); int palindrome = 1;
// Compare characters mirrored around the center.
for (size_t i = 0; i < length / 2; ++i)
if (text[i] != text[length - 1 - i]) { palindrome = 0; break; }
printf("%s is %sa palindrome\n", text, palindrome ? "" : "not ");
}
level is a palindrome
#include <algorithm>
#include <iostream>
#include <string>
int main() {
std::string text = "level";
// equal compares the first half with a reversed view.
bool palindrome = std::equal(text.begin(), text.begin() + text.size() / 2, text.rbegin());
std::cout << text << " is " << (palindrome ? "" : "not ") << "a palindrome\n";
}
level is a palindrome
Comparación entre C y C++
El bucle solo necesita llegar hasta la mitad de la cadena (length / 2), porque cada pareja de caracteres simétricos solo hay que comprobarla una vez. El carácter text[i] se compara con text[length - 1 - i]. En cuanto una pareja es distinta, el programa concluye que no es un palíndromo y sale del bucle con break.
C usa funciones procedurales pequeñas y muestra abiertamente cómo se representan los datos en memoria.
C++ sigue permitiendo trabajar a bajo nivel, pero añade tipos de biblioteca y abstracciones más seguras.
Ejercicios de práctica
Ejecuta las dos versiones y después modifica el código para ver la diferencia de seguridad que aporta cada lenguaje.
- Prueba entradas no válidas y valores límite.
- Compila con las opciones -Wall -Wextra -Wpedantic para activar más avisos.
- Pon las declaraciones comunes en un archivo de cabecera y la implementación en un archivo aparte.
Practica con un reto
Usa lo que cubre esta lección para resolver un problema real. Cada reto se ejecuta en el navegador, con pruebas al instante y una revisión de IA.
- Cadena Palíndroma Verifica si un texto se lee igual de izquierda a derecha y de derecha a izquierda. Fácil