Autor Tema: C# ejercicio de consola sistema de evaluación alumnos calcular obtener promedios  (Leído 6914 veces)

ThiDaper

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 8
    • Ver Perfil
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
« Última modificación: 11 de Enero 2022, 20:14 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re: ayuda con programa de C#
« Respuesta #1 en: 20 de Abril 2021, 02:06 »
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.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

ThiDaper

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 8
    • Ver Perfil
Re: ayuda con programa de C#
« Respuesta #2 en: 20 de Abril 2021, 20:09 »
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

Código: [Seleccionar]
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();

        }

    }
« Última modificación: 20 de Abril 2021, 20:11 por ThiDaper »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re: ayuda con programa de C#
« Respuesta #3 en: 21 de Abril 2021, 00:50 »
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.

Citar
            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 +
Citar
            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:
Código: [Seleccionar]
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.

Código: [Seleccionar]
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");

        }
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

ThiDaper

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 8
    • Ver Perfil
Re: ayuda con programa de C#
« Respuesta #4 en: 21 de Abril 2021, 01:15 »
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
Código: [Seleccionar]
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
« Última modificación: 21 de Abril 2021, 01:21 por ThiDaper »

ThiDaper

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 8
    • Ver Perfil
Re: ayuda con programa de C#
« Respuesta #5 en: 21 de Abril 2021, 01:22 »
ya lo solucione agrege un y funciona bien. muchas gracias por tu ayuda
Código: [Seleccionar]
Console.ReadKey();

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re: ayuda con programa de C#
« Respuesta #6 en: 21 de Abril 2021, 01:24 »
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()
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".