Hoy vamos a ver un ejercicio de programación en lenguaje C, también conocido como ANSI C. Se trata de generar números aleatorios, agregarlos a una lista (arreglo) y luego agruparlos para obtener la frecuencia con la que se repiten.

El ejercicio dice así:

Realizar un programa que genere de manera aleatoria 100 números en el intervalo del conjunto del 1 al 20, y después genera una lista con la frecuencia de cada número. Los números generados de manera aleatoria se deben de visualizar; la frecuencia de números se debe visualizar.

Veamos cómo resolverlo usando una pila, arreglos y algunas funciones.

Algoritmo

Lo primero que debemos hacer es declarar un arreglo de 100 elementos, y llenarlo con números aleatorios. También declaramos una pila dinámica que nos servirá para registrar la frecuencia de los números.

Al llenar el arreglo también agregamos los elementos a la pila (de hecho el arreglo no haría falta, porque la pila tendrá tanto la frecuencia como el número).

En caso de que el número no exista en la pila, lo registramos con una frecuencia de 1. Y si el número ya existe, entonces aumentamos su frecuencia.

Trabajando con la lista

Declaramos un struct que será un nodo de la pila. Tiene el número, la frecuencia con la que aparece y un apuntador al siguiente nodo.

Obviamente esto se podría optimizar si usáramos un diccionario en lugar de una pila, pero a mi parecer es más fácil gestionarlo con una pila (a nivel de programación, no a nivel de rendimiento).

See the gist on github.

Cuando se inserta un nuevo número por primera vez, se inserta un elemento en la pila.

See the gist on github.

Como puedes ver en la línea 4, la frecuencia por defecto es 1.

Agregar número si ya existe

Hasta ahora tenemos nuestra pila y agregamos los números por primera vez, pero debemos manejar el caso de que el número ya exista justamente para aumentar su frecuencia en este ejercicio de programación en C.

Por lo tanto definimos una función que regresa un apuntador a la memoria en donde se encuentra el número, o NULL en caso de que no se encuentre. Queda así:

See the gist on github.

Recorremos toda la pila y si encontramos el número, regresamos el apuntador a ese nodo. En caso contrario regresamos NULL.

Ahora cada que vayamos a agregar un número hacemos la comprobación: si ya existe, obtenemos el apuntador y aumentamos la frecuencia. Si no, lo agregamos por primera vez:

See the gist on github.

Imprimir frecuencias

Ahora para imprimir los números aleatorios y la frecuencia con la que aparecen, simplemente recorremos la pila y vamos imprimiendo. Para ello usamos el ciclo while en el lenguaje C, así como printf.

See the gist on github.

Poniendo todo junto

Frecuencia de números en C usando pila – Programación

Anteriormente expliqué todo el código para contar la frecuencia con la que aparecen los números, pero no hemos visto el llenado del arreglo con números aleatorios ni las funciones para generar los números.

Todo el código queda como se ve a continuación dentro de main:

See the gist on github.

Hay varias cosas en el método main, por ejemplo el llenado de la lista y la impresión de todas las cosas. Recuerda que en este caso hicimos conteo de números en C, anteriormente ya había explicado cómo contar la frecuencia de palabras.

Puedes ejecutar el código del ejercicio en este enlace. También puedes leer más sobre lenguaje C en mi blog.

Igualmente dejo un vídeo en YouTube explicando todo este ejercicio

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/

Compartir
Publicado por
parzibyte

Entradas recientes

JavaScript (lado del cliente): leer pixeles de imagen

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

4 días hace

PHP y JavaScript: llenar select con AJAX

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

4 días hace

Imprimir PDF generado con HTML

Hoy vamos a ver programar la impresión de un PDF generado a partir de HTML…

5 días hace

JavaScript: llenar select con arreglo

En este tutorial básico de JavaScript con HTML vamos a ver cómo llenar una lista…

2 semanas hace

Imprimir PDF a partir de URL

En este artículo se presenta una guía para imprimir un PDF a partir de una…

2 semanas hace

Imprimir PDF a partir de base64

En este post voy a enseñarte cómo imprimir un PDF a partir de su representación…

2 semanas hace

Esta web usa cookies.