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