Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: ThiDaper en 20 de Abril 2021, 01:31
-
Hola buenas, recién estoy aprendiendo a programar en C# y me han encargado realizar este ejercicio.
Ejercicio de consola 6:
Crear un sistema de evaluación para 5 alumnos:
1.- Debo poder guardar 5 alumnos.
2.- Cada alumno debo asignarle 4 notas.
3.- Puedo consultar el promedio de notas de cada alumno.
Mi idea era crear una array de nombres para ir guardando los nombres de los alumnos, y otra array para guardar las notas, y al final de preguntar todo mostrar sus promedios, el problema se me genera al crear las array en la parte de (static void Main(string[] args)) el Main se me genera con error y no logro saber por qué, y también al intentar capturar los nombres me indica que el string no es compatible con string. Si me ayudaran a cómo resolverlo y por qué se me genera este problema agradecería la ayuda.
Pd: he intentado hacerlo con un menú, y fue para peor xd
-
Sería importante ver tu código para poder decirte que es lo que está mal.
Por otra parte, en principio tu planteamiento es correcto.
Para los nombres de alumnos, un array de 5 elementos string.
Para las notas, lo ideal sería una matriz de 5x4 (5 alumnos, 4 notas por cada alumno)
Insisto, publica tu código y corregimos lo que esté mal.
-
Al final intente hacer el ejercicio de forma distinta pero no logro hacer que funcione, subo mi codigo
pd:creo que es una forma de hacer el ejercicio y seria mas facil haciendolo con metodos y array
static void Main(string[] args)
{
double resultado1, resultado2, resultado3, resultado4, promedio1, promedio2, promedio3, promedio4;
Console.WriteLine("ingrese el nombre del alumno");
string nombre1 = Convert.ToString(Console.ReadLine());
Console.WriteLine("Ingrese la primera nota");
double alu1numero1 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Ingrese el segundo nota");
double alu1numero2 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Ingrese la tercera nota");
double alu1numero3 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Ingrese la cuarta nota");
double alu1numero4 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("alumno 1 ingresado");
Console.WriteLine("------------------");
Console.WriteLine("ingrese el nombre del alumno");
string nombre2 = Convert.ToString(Console.ReadLine());
Console.WriteLine("Ingrese la primera nota");
double alu2numero1 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Ingrese el segundo nota");
double alu2numero2 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Ingrese la tercera nota");
double alu2numero3 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Ingrese la cuarta nota");
double alu2numero4 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("alumno 2 ingresado");
Console.WriteLine("------------------");
Console.WriteLine("ingrese el nombre del alumno");
string nombre3 = Convert.ToString(Console.ReadLine());
Console.WriteLine("Ingrese la primera nota");
double alu3numero1 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Ingrese el segundo nota");
double alu3numero2 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Ingrese la tercera nota");
double alu3numero3 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Ingrese la cuarta nota");
double alu3numero4 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("alumno 3 ingresado");
Console.WriteLine("------------------");
Console.WriteLine("ingrese el nombre del alumno");
string nombre4 = Convert.ToString(Console.ReadLine());
Console.WriteLine("Ingrese la primera nota");
double alu4numero1 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Ingrese el segundo nota");
double alu4numero2 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Ingrese la tercera nota");
double alu4numero3 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Ingrese la cuarta nota");
double alu4numero4 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("alumno 4 ingresado");
Console.WriteLine("--------------------");
Console.WriteLine("-----PROCESANDO-----");
Console.ReadLine();
resultado1 = alu1numero1 + alu1numero2 + alu1numero3 + alu1numero4;
promedio1 = resultado1 / 4;
resultado2 = alu2numero1 + alu2numero2 + alu2numero3 + alu2numero4;
promedio2 = resultado2 / 4;
resultado3 = alu3numero1 + alu3numero2 + alu3numero3 + alu3numero4;
promedio3 = resultado3 / 4;
resultado4 = alu4numero1 + alu4numero2 + alu4numero3 + alu4numero4;
promedio4 = resultado4 / 4;
Console.WriteLine("<==========>");
Console.WriteLine(nombre1, " = ",promedio1 );
Console.WriteLine("<==========>");
Console.WriteLine(nombre2, " = ", promedio2);
Console.WriteLine("<==========>");
Console.WriteLine(nombre3, " = ", promedio3);
Console.WriteLine("<==========>");
Console.WriteLine(nombre4, " = ", promedio4);
Console.ReadKey();
}
}
-
Hola.
Tu programa funciona pero no muestra los resultados al final por un error de sintaxis cuando intentas concatenar variables y cadenas de texto.
Tú lo haces separando con comas.
Console.WriteLine("<==========>");
Console.WriteLine(nombre1, " = ",promedio1 );
Console.WriteLine("<==========>");
Console.WriteLine(nombre2, " = ", promedio2);
Console.WriteLine("<==========>");
Console.WriteLine(nombre3, " = ", promedio3);
Console.WriteLine("<==========>");
Console.WriteLine(nombre4, " = ", promedio4);
Para concatenar, se usa el símbolo de sumar +
Console.WriteLine("<==========>");
Console.WriteLine(nombre1 + " = " + promedio1);
Console.WriteLine("<==========>");
Console.WriteLine(nombre2 + " = " + promedio2);
Console.WriteLine("<==========>");
Console.WriteLine(nombre3 + " = " + promedio3);
Console.WriteLine("<==========>");
Console.WriteLine(nombre4 + " = " + promedio4);
Las comas sí se usan cuando en la cadena ponemos caracteres "comodín", encerrados entre llaves e identificándolos con números para indicar el orden de la variable que los sustituye.
Por ejemplo:
Console.WriteLine("{0} = {1}", nombre1, promedio1 );
Al margen de esto...
...como tú mismo ya te has dado cuenta, tu solución no es la más óptima.
Para 5 alumnos, fíjate la cantidad de variables y líneas de instrucciones repetitivas que has tenido que usar.
Pues imagina si te pidieran hacerlo para los 30 alumnos de una clase...., o para los 300 alumnos de todo el centro de estudios.
Usando arrays y bucles, se puede hacer con menos líneas de código, sin importar si son 5 alumnos, 500 ó 50 millones...
Las líneas de código serán las mismas.
Te pongo una solución usando un vector para los nombres y una matriz para las calificaciones.
Al principio, el programa pregunta cuántos alumnos se quieren ingresar, así se puede ver que el código será el mismo sin importar el número de alumnos.
Míratelo, pruébalo, y pregunta si hay algo que no entiendes.
Un saludo.
static void Main(string[] args)
{
//Vector para los nombres
string[] alumnos;
//Matriz para las calificaciones
double[,] notas;
Console.Write("Cuantos alumnos quiere ingresar?: ");
int numAlumnos = Int32.Parse(Console.ReadLine());
//Inicializamos los arrays con la cantidad de alumnos indicada
alumnos = new string[numAlumnos];
notas = new double[numAlumnos,4]; //4 notas por cada alumno
//Con 2 bucles anidados, iremos pidiendo nombres de alumnos y sus 4 notas
for (int i = 0; i < numAlumnos; i++)
{
Console.WriteLine("\nAlumno #" + (i+1));
Console.Write("Nombre: ");
alumnos[i] = Console.ReadLine();
//Tenemos nombre, pedimos notas
for (int j = 0; j < 4; j++)
{
Console.Write("Nota #{0}: ", (j+1));
notas[i, j] = Double.Parse(Console.ReadLine());
}
Console.WriteLine("\n\t***Alumno Registrado***\n");
}
//Disponemos de todos los datos, pasamos a calcular y mostrar los promedios.
Console.WriteLine("\n\tPROMEDIO DE NOTAS\n");
for (int i = 0; i < numAlumnos; i++)
{
//Sumamos las 4 notas de este alumno
double sumaNotas = 0d;
for (int j = 0; j < 4; j++)
sumaNotas += notas[i, j];
//Mostramos su nombre y promedio
double promedio = sumaNotas / 4d;
Console.WriteLine("{0} --> {1:f2}", alumnos[i], promedio);
}
Console.WriteLine("\n\tFIN DE PROGRAMA");
}
-
hola, muchas gracias por tus consejos, tienes razon al usar las {} se me olvido que se utilizaba (error de novato), por otra parte si mi ejercicio no es nada optimo lo hize algo a la rapida y sin penser aparte que no me funcionaba y me saltaba un error en esta parte
static void [color=red]Main[/color](string[] args)
pd: no se si es error mio pero tu codigo una ves ingresado los alumnos, luego se cierra y no me muestra el promedio
-
ya lo solucione agrege un y funciona bien. muchas gracias por tu ayuda
Console.ReadKey();
-
Si, es por el Console.ReadKey() que no se lo puse.
Yo es que programo desde Visual Studio, y automáticamente te mantiene la consola abierta sin tener que usar un ReadKey()