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:
- Crear una matriz de 4 * 6
- 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
- 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.
- 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.
- Imprimir en pantalla la matriz completa.
- 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

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