Programación en C - Codificar texto con matriz de 25 letras

C – Codificación de texto con matriz

Hoy te mostraré un ejercicio resuelto en el lenguaje de programación C. Se trata de codificar un texto usando una matriz de 5 x 5 en donde una letra del alfabeto (que es el código) se remueve de la matriz para que solo haya 25 letras.

No encontré un nombre para esta codificación, pero básicamente se trata de eso: solicitar la letra que será el código, generar la matriz con las 25 letras sin contar el código y luego cifrar letras de par en par.

A continuación te muestro los detalles del ejercicio.

Descripción del ejercicio

Una simple y efectiva forma de codificar textos consiste en ubicar 25 de las 26 letras del alfabeto inglés en una matriz de 5×5. El nombre del código lo determina la letra faltante en la matriz, como es el caso del código “K” cuya representación es la siguiente:

Cada palabra del texto se considera compuesta de pares de letras. Si el número de letras en una palabra es impar, la última letra se conserva. También se conserva la letra que le da el nombre al código.

Un par de letras se codifica reemplazando la primera por aquella ubicada en su misma fila pero en la columna de la segunda y, la segunda por aquella ubicada en su misma fila pero en la columna de la primera.

Por ejemplo, usando el código “K”, si el texto original es COMPUTADOR CUANTICO el respectivo texto codificado es DNPMTUDAMT ESCLTIDN.

Especificación

Respecto de esta forma de codificación, considérese un texto compuesto de palabras escritas con letras mayúsculas, separadas por un carácter blanco y finalizado con un “*”, para desarrollar en lenguaje de programación C una aplicación que cumpla con lo que a continuación se indica:

  • Declaración: declara las estructuras de datos necesarias
  • leeCodigo: Lee un código (letra) y genera la correspondiente matriz
  • leeTexto: Lee un texto y lo almacena en un arreglo
  • codifica: Genera un arreglo con el texto codificado, habiendo recibido la matriz y el arreglo con el texto original.
  • decodifica: Genera un arreglo con el texto decodificado, habiendo recibido la matriz y el arreglo con el texto codificado.
  • muestraMatriz: Despliega la matriz
  • muestraTexto: despliega el texto (original o codificado) contenido en un arreglo
  • main: Llama organizadamente a las funciones anteriores.

Solución al ejercicio

Lo más confuso del ejercicio es hacer la codificación de cada par de letras, pero con las funciones adecuadas y aisladas podemos lograrlo. Veamos las funciones en orden.

La función que imprime la matriz es la siguiente. Simplemente hace 2 ciclos for, pues es un arreglo bidimensional:

Luego tenemos a la función que lee el código y genera la matriz. En este caso almacenamos el código de manera global, pues vamos a usarlo más tarde en otras funciones.

Para esto de la matriz y las letras usamos el aumento de caracteres o char, que en este caso permite aumentar una letra de modo que ‘A’ + 1 es ‘B’.

También es necesario contar con funciones que nos digan la fila y la columna de las letras, pues recuerda que la codificación se trata de intercambiar letras buscando columnas y filas de la otra letra.

He repetido un poco el código, así que las funciones se parecen mucho:

Estas funciones nos van a servir al remplazar las letras, y hablando de esa operación, tenemos las siguientes funciones que a partir del par de letras te indica el remplazo de la primera o de la segunda:

Finalmente tenemos a la función que codifica y decodifica. Básicamente son la misma función, pues lo que cambia es el texto, ya que si se codifica algo codificado el resultado es el texto original.

Por cierto es importante notar que estas funciones no regresan nada, sino que modifican al texto que se les pasa como argumento. Ahora solo falta aplicar todas estas funciones en el main:

Los comentarios dan una explicación adicional al código.

Poniendo todo junto

Programación en C - Codificar texto con matriz de 25 letras
Programación en C – Codificar texto con matriz de 25 letras

El código completo queda como se ve a continuación. Recuerda que tú puedes modificarlo como prefieras y adaptarlo a tus necesidades:

Si quieres puedes probarlo en línea en este enlace. Por cierto, en mi blog tengo más ejercicios resueltos en lenguaje 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