C# (C Sharp)

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

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.
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/

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

1 semana hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

2 semanas hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

2 semanas hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

2 semanas hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

2 semanas hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

2 semanas hace

Esta web usa cookies.