Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: EduardoMancia en 8 Mayo 2020, 08:16 am



Título: ¿Como podria hacer la impresion de datos de esa forma?
Publicado por: EduardoMancia en 8 Mayo 2020, 08:16 am
Estoy haciendo un ejercicio en c# de pedir 3 notas a un grupo de estudiantes y sacar los promedios del estudiante, pero me piden que la impresión de datos sea de esta forma:
Código:
No	Practica 1	Practica 2	Practica 2	Promedio
1 6 7 8 7.15

Ya lo intente hacer de varias formas la impresión de esa forma y no me funciona, alguna idea de como hacerlo? :(
adjunto mi codigo
Código:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace desafio_practico
{
    class Program
    {
        struct Alumnos
        {
            public Double practica1;
            public Double practica2;
            public Double practica3;
        }


        static void Main(string[] args)
        {
            Alumnos Acceso = new Alumnos();
            string dato;
            bool valido;

            Double sumaNotas = 0, promedio_general = 0;
            int n_alumnos;
            Double[] promedio_alumno = new Double[100];
            //Valida si el dato ingresado es valido
            Console.WriteLine("Digite el numero de alumnos: ");
            dato = Console.ReadLine();
            valido = int.TryParse(dato, out n_alumnos);
            if (valido == true)
            {


                for (int i = 0; i < n_alumnos; i++)
                {
                    Console.WriteLine("Alumno: " + (i + 1));
                    Console.WriteLine("Notas de las practicas:");
                    Console.WriteLine("Practica 1: ");
                    Acceso.practica1 = int.Parse(Console.ReadLine());
                    Console.WriteLine("Practica 2: ");
                    Acceso.practica2 = int.Parse(Console.ReadLine());
                    Console.WriteLine("Practica 3: ");
                    Acceso.practica3 = int.Parse(Console.ReadLine());

                    //Sacando el promedio del alumno
                    promedio_alumno[i] = Acceso.practica1 * 0.25 + Acceso.practica2 * 0.35 + Acceso.practica3 * 0.40;
                    //sacando el promedio general del grupo
                    sumaNotas += promedio_alumno[i];

                    Console.WriteLine("Promedio del alumno: {0}", promedio_alumno[i]);
               

                    Console.WriteLine("\n");

                }


                promedio_general = (sumaNotas / n_alumnos);
                Console.WriteLine("\n\nNOTA PROMEDIO DEL GRUPO: {0} ", promedio_general);

                Console.WriteLine("\n\nNOTA MAXIMA DEL GRUPO: " + promedioMin(promedio_alumno));


                Console.WriteLine("\n\nNOTA MINIMA DEL GRUPO: " + promedio_alumno.Min());
                Console.ReadKey();


            }
            else
            {
                Console.WriteLine("Digite un dato valido");
            }


        }
        //Encuentra la nota menor
        public static Double promedioMax(Double[] b)
        {
            return b.Max();
        }
        //Encuentra la nota menor
        public static Double promedioMin(Double[] b)
        {
            return b.Max();
        }

    }
}



Título: Re: ¿Como podria hacer la impresion de datos de esa forma?
Publicado por: ThunderCls en 8 Mayo 2020, 17:40 pm
Intentalo usando el caracter especial \t y el formateo compuesto con WriteLine, especificando la alineacion y el tipo.
https://docs.microsoft.com/en-us/dotnet/api/system.console.writeline?view=netcore-3.1
https://docs.microsoft.com/en-us/dotnet/standard/base-types/composite-formatting?view=netcore-3.1

Ejemplo:

Código
  1. static void Main(string[] args)
  2. {
  3.    int noAlumno = 1;
  4.    double p1 = 6, p2 = 7, p3 = 8;
  5.    Console.WriteLine("No\tPractica 1\tPractica 2\tPractica 3\tPromedio");
  6.    Console.WriteLine("{0}\t{1, -10:N}\t{2, -10:N}\t{3, -10:N}\t{4, 0:N}", noAlumno, p1, p2, p3, p1 * 0.25 + p2 * 0.35 + p3 * 0.40);
  7. }

Output
Código:
No      Practica 1      Practica 2      Practica 3      Promedio
1       6.00            7.00            8.00            7.15

Saludos