En este post de programación en C, también conocido como ANSI C vamos a resolver un ejercicio propuesto que trabaja con matrices, calificaciones, alumnos, materias y promedios. Es un ejercicio que voy a resolver, el mismo dice así:

Escriba un programa que tenga implementadas las siguientes funciones:

  1. Que reciba una matriz de nombre calificaciones y la llene de manera aleatoria con calificaciones de n alumnos y m materias. En la última columna de la matriz se calculará el promedio de cada alumno respectivamente.
  2. Reciba la matriz anterior y una matriz con los nombres de los alumnos. La función imprimirá los datos de nombres y calificaciones de cada alumno, organizados como una tabla. Así mismo, calculará e imprimirá el menor y mayor promedio correspondiente al alumno o los alumnos respectivamente.

Veamos entonces el código

Explicación del algoritmo

Vamos a dividir los problemas. Primero veamos el de llenar la matriz de manera aleatoria, para ello vamos a hacer un ciclo for que va a recorrer toda la matriz y va a ir colocando un valor aleatorio en cada posición.

Después vamos a definir la segunda función que recibe la matriz para imprimirla, usando las alineaciones de printf para dibujar la tabla y los algoritmos para obtener el menor y mayor.

He colocado los enlaces anteriores para que profundices en caso de que no entiendas algo explicado aquí.

Definiendo matriz y constantes

Veamos la definición de constantes usando #define, veremos por ejemplo la cantidad de materias, alumnos, longitudes, etcétera.

Recuerda que en este caso puedes cambiar los valores a tu gusto. Fíjate en que estamos definiendo también la calificación máxima y mínima para el caso de los números aleatorios. Por cierto, la función que vamos a usar es la siguiente:

Llenar matriz de manera aleatoria

Ahora veamos la función que rellena la matriz con calificaciones aleatorias y coloca el promedio de las mismas en la última columna:

El promedio es calculado en la línea 14. Además, la calificación es asignada en la línea 11.

Antes de imprimir tabla: imprimir línea

Antes de pasar al segundo requerimiento, veamos una función que nos va a ayudar a imprimir una línea que va a separar la tabla. Te repito que si quieres aprender más sobre cómo alinear o rellenar al usar printf veas el enlace que dejé anteriormente.

Básicamente esa función del lenguaje C hará que se imprima una línea como la siguiente:

+----------+--------+--------+--------+--------+

Imprimir tabla de calificaciones con promedios

Ahora sí pasemos al segundo requisito. En este caso simplemente se trata de imprimir los valores y acomodarlos de una manera limpia. También debemos calcular el menor promedio y el mayor promedio, así como el nombre del alumno al que le pertenece cada uno:

Solo por si no lo sabes, usamos memcpy para asignar una cadena, ya que en C no podemos hacer algo como:

cadenaDeclaradaAnteriormente = "nueva cadena";

Poniendo todo junto

Recuerda que debes invocar a srand pasándole un valor distinto en la ejecución del programa para que los valores aleatorios sean distintos. Como sea, la función main junto con las demás funciones queda así:

Yo lo he ejecutado y funciona perfectamente:

Ejercicio en C – Calificaciones, materias, promedios y alumnos con matrices

También puedes ejecutar el ejercicio en este enlace. Por otro lado, puedes leer más sobre C en mi blog.


Estoy disponible para trabajar en tu proyecto o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.
Si el post fue de tu agrado muestra tu apoyo compartiéndolo, suscribiéndote al blog, siguiéndome o realizando una donación.

Suscribir por correo

Ingresa tu correo y recibirás mis últimas entradas sobre programación, open source, bases de datos y todo lo relacionado con informática

Únete a otros 1,347 suscriptores


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/

0 Comentarios

Deja un comentario

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

A %d blogueros les gusta esto: