static void Main(string[] args) { string[] linesCamiones = System.IO.File.ReadAllLines(pathCamiones); cantidadCamiones = linesCamiones.Length - 1; camiones = new Camion[cantidadCamiones]; for (int i = 1; i <= cantidadCamiones; i++) { string lineaActual = linesCamiones[i]; string [] datosCamion = lineaActual.Split(";"); int idActual = Int32.Parse(datosCamion[0]); double volumenActual = double.Parse(datosCamion[1]); double pesoActual = double.Parse(datosCamion[2]); Camion camionActual = new Camion(idActual, volumenActual, pesoActual); camiones[i - 1] = camionActual; } string[] linesPaquetes = System.IO.File.ReadAllLines(pathPaquetes); cantidadPaquetes = linesPaquetes.Length - 1; paquetes = new Paquete[cantidadPaquetes]; for (int i = 1; i <= cantidadPaquetes; i++) { string lineaActual = linesPaquetes[i]; string [] datosPaquetes = lineaActual.Split(";"); int idActualP = Int32.Parse(datosPaquetes[0]); double volumenActualP = double.Parse(datosPaquetes[1]); double pesoActualP = double.Parse(datosPaquetes[2]); Paquete paqueteActual = new Paquete(idActualP, volumenActualP, pesoActualP); paquetes[i - 1] = paqueteActual; } for (int i = 0; i < camiones.Length; i++) { Camion ultimoCamion = camiones[i]; double volumenCamion = ultimoCamion.darVolumen(); double pesoCamion = ultimoCamion.darPeso(); Paquete [] paquetesDelCamion; int cantidadPaquetesCamion = 0; for (int j = 0; j < paquetes.Length; j++) { Paquete paqueteActual = paquetes[j]; double volumenDelPaquete = paqueteActual.darVolumen(); double pesoDelPaquete = paqueteActual.darPeso(); Boolean paqueteCabeEnCamion = volumenDelPaquete <= volumenCamion && pesoDelPaquete <= pesoCamion; if (paqueteCabeEnCamion == true && paqueteActual.retornarIngresado() == false) { cantidadPaquetesCamion++; volumenCamion = volumenCamion - volumenDelPaquete; pesoCamion = pesoCamion - pesoDelPaquete; } } paquetesDelCamion = new Paquete [cantidadPaquetesCamion]; int indicePaquetesAgregados = 0; for (int j = 0; j < paquetes.Length; j++) { Paquete paqueteActual = paquetes[j]; double volumenDelPaquete = paqueteActual.darVolumen(); double pesoDelPaquete = paqueteActual.darPeso(); Boolean paqueteCabeEnCamion = volumenDelPaquete <= ultimoCamion.darVolumen() && pesoDelPaquete <= ultimoCamion.darPeso(); if (paqueteCabeEnCamion == true && paqueteActual.retornarIngresado() == false) { paqueteActual.modificarIngresar(true); paquetesDelCamion [indicePaquetesAgregados] = paqueteActual; indicePaquetesAgregados++; ultimoCamion.modificarVolumen(ultimoCamion.darVolumen() - volumenDelPaquete); ultimoCamion.modificarPeso(ultimoCamion.darPeso() - pesoDelPaquete); } } ultimoCamion.agregarPaquetes(paquetesDelCamion); } Console.WriteLine("paquetes no despachados:"); for (int i = 0; i < paquetes.Length; i++) { if (paquetes[i].retornarIngresado() == false) { Console.WriteLine("id: " + paquetes[i].darId() + " volumen: " + paquetes[i].darVolumen() + " peso: " + paquetes[i].darPeso()); } } Console.WriteLine(" "); Console.WriteLine("Camiones despachados:"); for (int i = 0; i < camiones.Length; i++) { Camion camionActual = camiones[i]; Console.WriteLine("camion - id: " + camionActual.darId() + " volumen restante: " + camionActual.darVolumen() + " peso restante: " + camionActual.darPeso()); for (int j = 0; j < camionActual.darPaquetes().Length; j++) { Console.WriteLine("id: " + camionActual.darPaquetes()[j].darId() + " volumen: " + camionActual.darPaquetes()[j].darVolumen() + " peso: " + camionActual.darPaquetes()[j].darPeso()); } Console.WriteLine(" "); } }