Comprobar si una palabra es anagrama de otra en C

Publicado por parzibyte en

Comprobar si una cadena es anagrama de otra en C

En este post pondré la función para ver si una cadena es anagrama de otra usando C.

Las cosas con C son más complicadas, pero a su vez más interesantes. Todo esto es porque C es un lenguaje de programación que es fuertemente tipado y que no tiene un recolector de basura ni esas cosas que otros tienen.

Comprobar si una cadena es anagrama de otra en C

Comprobar si una cadena es anagrama de otra en C

Personalmente me gusta resolver ejercicios con C, pues siempre suponen un reto. Por eso es que hoy veremos cómo saber si dos cadenas o palabras son anagramas utilizando el lenguaje de programación C.

El algoritmo para determinar si una palabra es anagrama de otra

Los pasos son pocos, pero cada uno lleva su determinado tiempo. Lo primero que se hace es quitar signos de puntuación, espacios y cosas que no cuentan en los anagramas; para ello usamos esta función que remueve caracteres de una cadena en C.

Más tarde convertimos ambas palabras a mayúsculas o minúsculas; porque los anagramas no toman en cuenta la notación de las letras, así que ambas deben estar en la misma notación.

Finalmente ordenamos las cadenas alfabéticamente y si después de todo esto son iguales, entonces se dice que son anagramas.

Ejemplo del funcionamiento del algoritmo

Veamos un ejemplo rápido con una referencia a Harry Potter y el que no debe ser nombrado. Las cadenas son:

I am Lord Voldemort‘ y ‘Tom Marvolo Riddle

Les quitamos los espacios y ahora son:

IamLordVoldemort‘ y ‘TomMarvoloRiddle

Se convierten a minúsculas y ahora se ven así:

iamlordvoldemort‘ y ‘tommarvoloriddle

Finalmente se ordenan alfabéticamente así:

addeillmmooorrtv‘ y ‘addeillmmooorrtv

Si ambas son iguales (tanto en contenido como longitud) entonces se dice que son anagramas. El ejemplo de arriba es un anagrama.

Función en C que dice si una cadena es anagrama de otra

Después de tanta charla, es hora de presentar la función. La misma recibe dos cadenas y devuelve un booleano indicando si son o no anagramas.

Nota: la función va a modificar a las cadenas, así que si quieres mantenerlas intactas haz una copia de ellas.

Para probar, declaré un arreglo de arreglos de cadenas y fui probando cada grupo de palabras. Para ordenar se usa qsort usando a strcmp que devuelve 1, 0 o -1 dependiendo de la comparación de las cadenas.

Los métodos para eliminar caracteres de una cadena o convertir a minúsculas están en el código.

Como siempre, puedes probar el código aquí:

Eso es todo. Recuerda que puedes ver más cosas sobre C aquí.


parzibyte

He trabajado por más de 4 años en el desarrollo de software con experiencia en Java, PHP, JavaScript, HTML, Node.JS, Python, Android y Go. También he trabajado con bases de datos SQL como MySQL y SQLite, así como con bases de datos NoSQL usando MongoDB.Soy bueno utilizando algunos frameworks y herramientas como Firebase, jQuery, AngularJS, VueJS, CodeIgniter, Laravel, BulmaCSS, Bootstrap y Electron.Otros términos que conozco son: Arduino, GraphQL, API's, REST, AJAX, PouchDB, CouchDB, Experiencia de usuario, buenas prácticas de programación, Webpack, NPM, Administración de servidores y programación de scriptsLa plataforma en la que tengo más experiencia es la web, pero en mis ratos libres realizo unos pequeños ejercicios en C# y C.Estoy aquí para ayudarte a resolver tus problemas de programación y depuración :-)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

A %d blogueros les gusta esto: