static int ComparacionCurso(Curso x, Curso y) { return(y.CapacidadCurso.CompareTo(x.CapacidadCurso)); }
//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(); }