Example #1
0
 static int ComparacionCurso(Curso x, Curso y)
 {
     return(y.CapacidadCurso.CompareTo(x.CapacidadCurso));
 }
Example #2
0
        //Lo resolvio andres en clase. 15/04. Solo le agregue los ingresos por usuario

        //Las validaciones estan en la clase Alumnos.


        static void Main(string[] args)
        {
            var cursos  = new List <Curso>();  //cursos x Codigo.
            var alumnos = new List <Alumno>(); //alumnos x Legajo.

            //Alumnos
            int nLegajo         = 0;
            int nRanking        = 0;
            int CantidadAlumnos = 0;

            //Condiciones
            string Ingreso;
            string Condicion;
            bool   Flag;

            Console.WriteLine("SISTEMA PARA ASIGNAR ALUMNOS A CURSOS\n");

            //Ingreso de datos Alumnos
            do
            {
                Alumno A = new Alumno();

                do
                {
                    Console.WriteLine("Ingrese el numero de legajo del alumno: ");
                    Ingreso = Console.ReadLine();
                    Flag    = Alumno.ValidarNumero(Ingreso, ref nLegajo);
                } while (Flag == false);


                if (alumnos.Any(x => x.NLegajo == nLegajo))
                {
                    Console.WriteLine("\nUsted va a modificar el ranking del estudiante");
                }

                do
                {
                    Console.WriteLine("Ingrese el Ranking del alumno: ");
                    Ingreso = Console.ReadLine();
                    Flag    = Alumno.ValidarNumero(Ingreso, ref nRanking);
                } while (Flag == false);


                CantidadAlumnos += 1;


                //Si es que tengo que actualizar el ranking
                if (alumnos.Any(x => x.NLegajo == nLegajo))
                {
                    //el Nlegajo ya existe => modifico el ranking.
                    var estudiante = (A.NLegajo = nLegajo);
                    A.NLegajo = A.NRanking;
                    Console.WriteLine($"Se ha cambiado el ranking del estudiante {estudiante} a {nRanking}");
                }
                //Agrego Alumnos
                else
                {
                    A.NLegajo  = nLegajo;
                    A.NRanking = nRanking;

                    alumnos.Add(A);

                    Console.WriteLine("Se ha agregado el estudiante a la lista.\n");
                }

                do
                {
                    Console.WriteLine("Escriba si para agregar alumnos o cualquier letra para salir: ");
                    Condicion = Console.ReadLine();
                    Flag      = Alumno.ValidarVacio(Condicion, "Condicion");
                } while (Flag == false);
            } while (Condicion == "si");



            //Curso
            int nCurso         = 0;
            int Capacidad      = 0;
            int CapacidadTotal = 0;
            int CantidadCursos = 0;

            //Ingreso de datos Cursos
            do
            {
                Curso C = new Curso();

                do
                {
                    Console.WriteLine("\nIngrese el numero del curso: ");
                    Ingreso = Console.ReadLine();
                    Flag    = Alumno.ValidarNumero(Ingreso, ref nCurso);
                } while (Flag == false);

                if (cursos.Any(x => x.CapacidadCurso == Capacidad))
                {
                    Console.WriteLine("\nUsted va a modificar la capacidad del curso");
                }

                do
                {
                    Console.WriteLine("Ingrese la capacidad del curso: ");
                    Ingreso = Console.ReadLine();
                    Flag    = Alumno.ValidarNumero(Ingreso, ref Capacidad);
                } while (Flag == false);

                CantidadCursos += 1;
                CapacidadTotal += Capacidad;

                //Si es que tengo que actualizar la capacidad del curso
                if (cursos.Any(x => x.CapacidadCurso == Capacidad))
                {
                    //el Ncurso ya existe => modifico la capacidad.
                    var curso = (C.CapacidadCurso = Capacidad);
                    C.NCurso = C.CapacidadCurso;
                    Console.WriteLine($"Se ha cambiado la capacidad del {curso} a {nRanking}");
                }
                //Agrego cursos
                else
                {
                    C.NCurso         = nCurso;
                    C.CapacidadCurso = Capacidad;
                    cursos.Add(C);

                    Console.WriteLine("Se ha agregado el curso a la lista.\n");
                }


                do
                {
                    Console.WriteLine("Escriba si para agregar cursos  o cualquier letra para salir: ");
                    Condicion = Console.ReadLine();
                    Flag      = Alumno.ValidarVacio(Condicion, "Condicion");
                } while (Flag == false);
            } while (Condicion == "si");



            //Ordeno
            alumnos.Sort(comparison: ComparacionAlumno);
            cursos.Sort(comparison: ComparacionCurso);

            //Muestro datos
            Console.WriteLine("\nLa cantidad de cursos es: " + CantidadCursos);
            Console.WriteLine("\nLa capacidad total de alumnos es: " + CapacidadTotal);

            //Alumnos ordenados por ranking
            Console.WriteLine("\nAlumnos ordenados");
            foreach (var alumno in alumnos)
            {
                Console.WriteLine($"Legajo = {alumno.NLegajo}, Ranking = {alumno.NRanking}");
            }
            Console.WriteLine("Presione una tecla para continuar.\n");
            Console.ReadKey();

            //Pruebo si quedan capacidad en los cursos.
            //Si es mayor a cero, agrego el alumno
            //Si no lo rechazo
            int indiceCurso = 0;

            foreach (var alumno in alumnos)
            {
                if (cursos[indiceCurso].CapacidadCurso > 0)
                {
                    cursos[indiceCurso].Alumnos.Add(alumno);
                    cursos[indiceCurso].CapacidadCurso--;
                }

                indiceCurso++;
                if (indiceCurso > cursos.Count - 1)
                {
                    indiceCurso = 0;
                }
            }

            //Muestro las asignaciones
            foreach (var curso in cursos)
            {
                Console.WriteLine($"Curso {curso.NCurso}");
                foreach (var alumno in curso.Alumnos)
                {
                    Console.WriteLine($"Legajo = {alumno.NLegajo}, Ranking = {alumno.NRanking}");
                }
                Console.WriteLine("--------------------------");
            }

            Console.WriteLine("\nPresione Enter para salir...");
            Console.ReadLine();
        }