Verificar si una cadena es un palíndromo considerando solo letras e ignorando espacios

Programa en C que verifica si una cadena es un palíndromo considerando solo letras, ignorando espacios, puntuación y diferencias de mayúsculas.

Breve Introducción

Verificar si una cadena es un palíndromo considerando solo letras e ignorando espacios (c)
DESCRIPCIÓN:
Programa en C que verifica si una cadena es un palíndromo considerando solo letras, ignorando espacios, puntuación y diferencias entre mayúsculas y minúsculas.

NOTAS ADICIONALES:
El programa lee una cadena desde la entrada estándar, la normaliza eliminando caracteres no alfabéticos e ignorando mayúsculas/minúsculas, luego verifica si es un palíndromo.

EXPLICACIONES:
- La función isalpha() se usa para considerar solo letras alfabéticas.
- tolower() convierte los caracteres a minúsculas para uniformar la comparación.
- La comparación se realiza mediante dos índices, uno al inicio y otro al final de la cadena filtrada.
- Si todos los caracteres coinciden, la cadena es un palíndromo.

Código de Ejemplo: c

#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;
}
×
×
×
¿Quieres regenerar la respuesta?
×
Exportar chat
Elige el formato de exportación
⏳ Generazione PDF in corso…
Allegati
×
⚠️ Estás a punto de cerrar el chat y pasar al generador de imágenes. Si no has iniciado sesión, perderás nuestro chat. ¿Confirmas?
👁 Estás viendo un chat compartido en modo temporal. No se guardará.
💬
×
Prompts guardados
×
Nota privada
×
Etiqueta
×
Buscar en todos los chats
×
Tus insights
Analizando…
×
Preferencias de IA
Nombre del asistente 30
Longitud de las respuestas
Modelo de IA
Respuestas estructuradas
Incluir ejemplos
Usar emojis
Guíame, no resuelvas Pistas y preguntas en vez de la solución hecha
Más ajustes →
×
Compartir este chat
Quien abra este enlace podrá ver el chat o añadirlo a su perfil como chat propio.
⚠️ Atención: también se compartirán los archivos adjuntos del chat. Quien lo añada recibirá una copia en su propia carpeta.
Chat compartido
Alguien ha compartido un chat contigo. ¿Solo quieres verlo o añadirlo a tus chats?
⚠️ Atención: también se compartirán los archivos adjuntos del chat. Quien lo añada recibirá una copia en su propia carpeta.
×

📌 Mensajes guardados

Cargando...

×

Historial de Chat

programas-ejemplo · HISTORIAL DE CHAT

Cargando...

Preferencias de IA

×
  • 🟢 BásicoRespuestas rápidas y esenciales para estudiar
  • 🔵 MedioMayor calidad para estudio y programación
  • 🟣 AvanzadoRazonamiento complejo y análisis detallado
Explicar Pasos

¿Qué se necesita?

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

Temas Similares

Verificar si un número es par o impar
Programa en C que determina si un número es par o impar usando el operador módulo, ideal para principiantes que aprenden programación básica.
Contar caracteres de una cadena sin usar strlen
Ejemplo en C para contar caracteres de una cadena sin usar strlen, recorriendo manualmente hasta el carácter de terminación para entender su funcionamiento.
Verificar si un año es bisiesto (versión simple)
Programa en C que verifica si un año es bisiesto usando la regla básica de divisibilidad por 4, ideal para principiantes en programación.
Programa que cuenta las vocales en una cadena
Programa en C que lee una cadena y cuenta las vocales, usando fgets para seguridad y tolower para identificar vocales mayúsculas y minúsculas.
Programa que reemplaza los espacios por guiones bajos en una cadena
Programa en C que reemplaza espacios por guiones bajos en cadenas. Ejemplo didáctico con función modular y entrada segura usando fgets.
Gestión de una lista de estudiantes con estructuras y ordenación por nota
Ejemplo en C para gestionar y ordenar una lista de estudiantes usando estructuras y qsort según la nota final de forma eficiente y sencilla.
Implementación de una cola (queue) con array y operaciones básicas en C
Implementación en C de una cola con array circular que soporta operaciones básicas como enqueue, dequeue, isEmpty e isFull con control de errores.
Simulación de una pila con arrays y gestión de desbordamientos
Ejemplo en C que muestra cómo implementar una pila con arrays, incluyendo funciones push, pop y manejo de errores de desbordamiento y subdesbordamiento.