Ejercicio resuelto con C# - Notas de estudiantes con matrices
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.
El ejercicio dice así:
Se desea hacer un cuadro de notas para 3 estudiantes, por lo tanto se requiere hacer lo siguiente:
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.
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.
En este post te quiero compartir un código de C++ para listar y cancelar trabajos…
Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…
Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…
Esta semana estuve recreando la API del plugin para impresoras térmicas en Android (HTTP a…
Hoy te enseñaré a extraer la cadena base64 de una clave PEM usando una función…
Encender un foco con un Bot de Telegram es posible usando una tarjeta como la…
Esta web usa cookies.