Programa en C que verifica si una cadena es un palíndromo considerando solo letras, ignorando espacios, puntuación y diferencias de mayúsculas.
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define MAX_LEN 256
// Función que verifica si una cadena es un palíndromo considerando solo letras e ignorando espacios y mayúsculas
int isPalindroma(const char *str) {
char filtered[MAX_LEN]; // Cadena filtrada que contiene solo letras minúsculas
int j = 0;
// Filtramos la cadena original: tomamos solo letras y convertimos a minúsculas
for (int i = 0; str[i] != '\0' && j < MAX_LEN - 1; i++) {
if (isalpha((unsigned char)str[i])) {
filtered[j++] = tolower((unsigned char)str[i]);
}
}
filtered[j] = '\0'; // terminador de cadena
// Verificación de palíndromo con dos índices
int left = 0;
int right = j - 1;
while (left < right) {
if (filtered[left] != filtered[right]) {
return 0; // No es palíndromo
}
left++;
right--;
}
return 1; // Es palíndromo
}
int main() {
char input[MAX_LEN];
printf("Introduce una cadena para verificar: ");
if (fgets(input, sizeof(input), stdin) == NULL) {
printf("Error al leer la cadena.\n");
return 1;
}
// Eliminamos posible salto de línea final
size_t len = strlen(input);
if (len > 0 && input[len - 1] == '\n') {
input[len - 1] = '\0';
}
if (isPalindroma(input)) {
printf("La cadena es un palíndromo considerando solo letras e ignorando espacios y mayúsculas.\n");
} else {
printf("La cadena NO es un palíndromo considerando solo letras e ignorando espacios y mayúsculas.\n");
}
return 0;
}Hardware: no se requieren componentes de hardware específicos, el programa se ejecuta en PC o entorno embebido genérico.
Software: compilador C estándar (gcc, clang, etc.)
Librerías estándar de C: stdio.h para entrada/salida, ctype.h para funciones de manipulación de caracteres (tolower, isalpha)
Configuración: no se requiere configuración especial