C – Ejercicio con matriz de calificaciones, alumnos, materias y promedios

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.

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

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