Ejercicio resuelto con C# - Notas de estudiantes con matrices

C# – Ejercicio con matriz de calificaciones

Hoy te mostraré un ejercicio resuelto en el lenguaje de programación C# en el que vamos a trabajar con matrices, cálculo del promedio, lectura de datos por teclado y otras cosas.

Se trata de un ejercicio para las notas de 3 estudiantes en donde vamos a solicitar zona obtenida, parcial 1, parcial 2 y examen final para calcular la nota final.

Descripción del ejercicio

El ejercicio dice así:

Se desea hacer un cuadro de notas para 3 estudiantes, por lo tanto se requiere hacer lo siguiente:

  1. Crear una matriz de 4 * 6
  2. La primera fila de la matriz tendrá la siguiente estructura: Nombre del estudiante, Zona Obtenida (no puede ser mayor que 20 puntos), Parcial 1 (no puede ser mayor a 20 puntos), Parcial 2 (no puede ser mayor a 25 puntos) , Examen Final (no puede ser mayor a 35 puntos) y Nota final
  3. Solicitarle al usuario el nombre de 3 estudiantes, la zona obtenida, la calificación del primer parcial, la calificación del segundo parcial, la calificación del examen final.
  4. La nota final es el resultado de la suma de: zona obtenida, la calificación del primer parcial, la calificación del segundo parcial y la calificación del examen final.
  5. Imprimir en pantalla la matriz completa.
  6. Cambiar de color al texto de Nota final, si la calificación final es menor a 61 puntos entonces colocarlo en rojo, caso contrario color verde.

Explicación del algoritmo

Ejercicio resuelto con C# - Notas de estudiantes con matrices
Ejercicio resuelto con C# – Notas de estudiantes con matrices

Como vamos a alojar cadenas y enteros en la matriz, necesitamos un arreglo dinámico. Luego de eso haremos un simple ciclo for para solicitar los datos e ir rellenando la matriz.

En cada paso del ciclo for también vamos a ir calculando la nota final. Luego de solicitar los datos vamos a recorrer la matriz e ir imprimiendo los datos, cambiando el color del texto de la consola según sea necesario.

Por cierto, para solicitar un valor y validar que no es mayor al límite vamos a usar el ciclo while.

Código C#

Finalmente veamos el código C#. Obviamente tú puedes modificarlo y adaptarlo a tus necesidades.

/*
  ____          _____               _ _           _       
 |  _ \        |  __ \             (_) |         | |      
 | |_) |_   _  | |__) |_ _ _ __ _____| |__  _   _| |_ ___ 
 |  _ <| | | | |  ___/ _` | '__|_  / | '_ \| | | | __/ _ \
 | |_) | |_| | | |  | (_| | |   / /| | |_) | |_| | ||  __/
 |____/ \__, | |_|   \__,_|_|  /___|_|_.__/ \__, |\__\___|
         __/ |                               __/ |        
        |___/                               |___/         
    
____________________________________
/ Si necesitas ayuda, contáctame en \
\ https://parzibyte.me               /
 ------------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
Creado por Parzibyte (https://parzibyte.me).
------------------------------------------------------------------------------------------------
            | IMPORTANTE |
Si vas a borrar este encabezado, considera:
Seguirme: https://parzibyte.me/blog/sigueme/
Y compartir mi blog con tus amigos
También tengo canal de YouTube: https://www.youtube.com/channel/UCroP4BTWjfM0CkGB6AFUoBg?sub_confirmation=1
Twitter: https://twitter.com/parzibyte
Facebook: https://facebook.com/parzibyte.fanpage
Instagram: https://instagram.com/parzibyte
Hacer una donación vía PayPal: https://paypal.me/LuisCabreraBenito
------------------------------------------------------------------------------------------------
*/
using System;

class MainClass
{

    public static void Main(string[] args)
    {
        dynamic[,] matriz = new dynamic[4, 6];
        // Declarar la primera fila
        matriz[0, 0] = "Nombre del estudiante";
        matriz[0, 1] = "Zona obtenida";
        matriz[0, 2] = "Parcial 1";
        matriz[0, 3] = "Parcial 2";
        matriz[0, 4] = "Examen final";
        matriz[0, 5] = "Nota final";
        for (int y = 1; y < 4; y++)
        {
            Console.Write("Ingresa el nombre del estudiante " + y + ": ");
            string nombre = Console.ReadLine();
            matriz[y, 0] = nombre;
            double zona = 21;
            while (zona > 20)
            {
                Console.Write("Ingresa la zona obtenida de " + nombre + ": ");
                zona = Convert.ToDouble(Console.ReadLine());
                if (zona > 20)
                {
                    Console.WriteLine("La zona no puede ser mayor a 20");
                }
            }
            matriz[y, 1] = zona;

            double parcial1 = 21;
            while (parcial1 > 20)
            {
                Console.Write("Ingresa la calificación del parcial 1 de " + nombre + ": ");
                parcial1 = Convert.ToDouble(Console.ReadLine());
                if (parcial1 > 20)
                {
                    Console.WriteLine("El parcial 1 no puede ser mayor a 20");
                }
            }
            matriz[y, 2] = parcial1;

            double parcial2 = 26;
            while (parcial2 > 25)
            {
                Console.Write("Ingresa la calificación del parcial 2 de " + nombre + ": ");
                parcial2 = Convert.ToDouble(Console.ReadLine());
                if (parcial2 > 25)
                {
                    Console.WriteLine("El parcial 2 no puede ser mayor a 25");
                }
            }
            matriz[y, 3] = parcial2;

            double examenFinal = 36;
            while (examenFinal > 35)
            {
                Console.Write("Ingresa la calificación del examen final de " + nombre + ": ");
                examenFinal = Convert.ToDouble(Console.ReadLine());
                if (examenFinal > 35)
                {
                    Console.WriteLine("El examen final no puede ser mayor a 35");
                }
            }
            matriz[y, 4] = examenFinal;
            // Finalmente calcular la nota final
            double notaFinal = zona + parcial1 + parcial2 + examenFinal;
            matriz[y, 5] = notaFinal;
        }
        // Ahora simplemente imprimimos la matriz. Primero el encabezado
        Console.WriteLine();
        for (int i = 0; i < 1; i++)
        {
            for (int j = 0; j < matriz.GetLength(1); j++)
            {
                Console.Write(matriz[i, j] + "\t");
            }
            Console.WriteLine();
        }
        // Luego los demás datos
        for (int i = 1; i < matriz.GetLength(0); i++)
        {
            string nombre = matriz[i, 0];
            double zona = matriz[i, 1];
            double parcial1 = matriz[i, 2];
            double parcial2 = matriz[i, 3];
            double examenFinal = matriz[i, 4];
            double notaFinal = matriz[i, 5];
            Console.Write(nombre + "\t\t\t");
            Console.Write(zona + "\t\t");
            Console.Write(parcial1 + "\t\t");
            Console.Write(parcial2 + "\t\t");
            Console.Write(examenFinal + "\t\t");
            if (notaFinal < 61)
            {
                Console.ForegroundColor = ConsoleColor.Red;
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Green;
            }
            Console.Write(notaFinal + "\t\t");
            // Reseteamos el color a gris
            Console.ForegroundColor = ConsoleColor.White;
            Console.WriteLine();
        }
    }
}

Puedes aprender más sobre C# en mi blog.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

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 *