Lenguaje de programación C

Palíndromo en C usando recursividad y ciclos

Introducción

Ya comprobamos si una cadena es palíndroma o palíndromo en C#, un lenguaje de alto nivel en donde no nos importa mucho el manejo de la memoria, tenemos booleanos y funciones para cortar cadenas.

Ahora veamos lo mismo pero en el lenguaje de programación C, uno antiguo en donde ni siquiera existe un recolector de basura.

Palíndromo en C

En resumen, veremos cómo:

  • Comprobar si una cadena es palíndroma usando recursividad
  • Usar el ciclo while para determinar si una cadena es palíndroma

Todo esto en el lenguaje ANSI C. Si no sabes lo que esto es, visita la Wikipedia.

Explicación del algoritmo

Ya sea que usemos recursión o ciclos, el algoritmo es el mismo. Si una cadena mide 1 o menos, entonces es palíndroma. Una cadena vacía y una de 1 es palíndroma. Por ejemplo, “m” se lee igual al inicio y al revés.

Pero en caso de que no mida 1, entonces comparamos el último y el primero; y avanzamos. Veamos un ejemplo pequeño con “abcba” que aunque no tiene sentido servirá.

El primer carácter es a, y el último es a. Avanzamos y cortamos la cadena. Ahora el primero es b y el último es b. Avanzamos, y ahora la cadena mide 1, por lo que se regresa verdadero y ahí termina todo.

Cuando una cadena no es palíndroma, nos daremos cuenta porque el primero y último no coincidirán. Hagamos una simulación con “abaa”.

Comparamos el primero y el último (a con a), y sí coinciden así que avanzamos. Luego comparamos b con a, y ahí ya no coinciden así que regresamos falso y termina.

Palíndromo en C usando recursividad

Primero veamos el enfoque recursivo. En este, la función se llama a sí misma y se va pasando los nuevos límites en donde compararemos.

See the gist on github.

Recibe 3 argumentos: la cadena, el inicio y el fin. Sólo debemos preocuparnos la primera vez, de ahí ella se encarga.

Al inicio de todo, el inicio será 0 y el fin lo que mida la cadena menos 1, recordando que los índices comienzan en 0.

Palíndromo en C con ciclo While

Este método es más corto y únicamente recibe la cadena como argumento. Él se encarga de calcular el inicio y fin:

See the gist on github.

En lugar de usar recursión, hacemos un while y dentro de él acortamos los límites de la cadena. Si ya sólo queda un carácter regresamos 1, y si no entonces en algún momento el ciclo terminará y nos regresará 0.

Probar funciones

Si no tienes idea de cómo se llama a estas funciones, no te preocupes. Aquí dejo un ejemplo en donde escaneamos una cadena del usuario e indicamos si es o no palíndroma. Por cierto, ya sé que palíndromo lleva acento pero C no es muy bueno imprimiéndolos.

See the gist on github.

Pero si sigue sin quedar claro o crees que no funciona, prueba este replit tú mismo.

Por cierto, el límite de la cadena es de 50 pero puedes cambiarlo en el código.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Entradas recientes

Imprimir PDF con Bot de Telegram

La impresión de un PDF en cualquier impresora se puede automatizar con un bot de…

16 horas hace

Enviar mensaje con bot de Telegram usando JavaScript (lado del cliente)

Hoy te enseñaré cómo enviar un mensaje a un usuario desde un bot de Telegram…

1 día hace

PHP: incrustar imagen en base64

El día de hoy te enseñaré algo muy sencillo pero útil al programar con PHP:…

1 día hace

Plugin ESC POS – Actualización 3.4.0: imprimir HTML

El plugin para imprimir en impresoras térmicas alcanza hoy su versión 3.4.0 agregando soporte para…

2 días hace

JavaScript (lado del cliente): leer pixeles de imagen

En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…

1 semana hace

PHP y JavaScript: llenar select con AJAX

Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…

1 semana hace

Esta web usa cookies.