Ejercicio de cadenas en ANSI C

C – Ejercicio con cadenas

Hoy vamos a resolver un ejercicio propuesto en C. Se trata del trabajo con cadenas, vamos a solicitar dos cadenas y a partir de ellas hacer determinadas cosas. El problema dice así:

Escribir un programa que solicite dos cadenas que puede contener espacios, el programa deberá:

  • Decir qué cadena es mayor y cuál es menor alfabéticamente
  • Generar una nueva cadena que será la primera cadena leída, con las vocales convertidas a MAYÚSCULAS
  • Generar una nueva cadena que será la segunda cadena leída, con las consonantes convertidas a MAYÚSCULAS
  • Generar una nueva cadena concatenando las dos que ya fueron convertidas
  • Generar una nueva cadena que contenga la cadena concatenada invertida

Al finalizar el programa, este deberá:

  • Imprimir las dos cadenas originales
  • Imprimir las dos cadenas con las conversiones
  • Imprimir la cadena concatenada
  • Imprimir la cadena concatenada invertida

Veamos cómo resolver este problema usando ANSI C.

Solución general

Para escanear cadenas con espacios será necesario el uso de fgets en lugar de scanf.

Leyendo las restricciones vemos que vamos a comparar cadenas, para ello vamos a usar la función strcmp.

Después vemos que vamos a convertir algunas letras a mayúsculas, en el primer caso si son vocales y en el segundo si son consonantes. Para ello usaremos unas funciones que ya expliqué anteriormente.

Luego vamos a crear cadenas, así que necesitamos copiarlas usando strcpy. Para el caso de concatenar, será necesario el uso de strcat.

Finalmente para invertir la cadena vamos a recorrerla cadena de fin a inicio e imprimir cada carácter, ya que el ejercicio no pide que almacenemos el resultado en una cadena distinta, pero si así fuera, ya existe una función para ello.

Al terminar el ejercicio vamos a imprimir todas las cadenas justo como fue solicitado.

Escanear cadenas

Comencemos a resolver las solicitudes. El primer requisito es escanear las cadenas con espacios:

Decir cuál cadena es mayor

Ahora vamos a usar strcmp para saber cuál cadena es mayor alfabéticamente. Recordemos que strcmp regresa 0 si las cadenas son iguales, un número menor que 0 si la primer cadena es menor que la segunda, y un número mayor que 0 si la primer cadena es mayor que la segunda.

Convirtiendo consonantes y vocales

Llega el turno del siguiente paso, el cual es convertir las vocales de la primera cadena en mayúsculas, y las consonantes de la segunda igualmente en mayúsculas.

Lo primero que tenemos que hacer es copiar las cadenas, después recorrerlas e ir modificando el carácter si es que es necesario. El código queda así:

Concatenar cadenas

Ya casi terminamos. Ahora vamos a hacer el siguiente paso del ejercicio y es concatenar las cadenas modificadas. Eso lo hacemos con strcat y queda así:

Imprimir cadena invertida

El último requisito es imprimir la cadena concatenada anteriormente pero de manera invertida. Para ello hacemos lo siguiente:

Poniendo todo junto

Ahora veamos el código completo que solicita ambas cadenas al usuario e imprime todo lo solicitado. Queda así:

Al ejecutarlo, la salida es correcta:

Ejercicio de cadenas en ANSI C
Ejercicio de cadenas en ANSI C

En mi blog puedes ver más ejercicios y posts sobre C.

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.

Dejar un comentario