Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

221
Vistas
Reste los elementos de dos listas entre sí con longitudes de elementos desconocidas en C#

Tengo dos listas en mi programa que la longitud de las listas no es igual. Quiero restar los miembros de estas dos listas elemento por elemento y guardarlos en una lista.

 List<double> arrivals = new List<double>(); List<double> departure = new List<double>(); List<double> delays = new List<double>(); double departure_p = 0.8; double arrival_p = 0.45; int slot = 0; while (slot < 1000) { Random a = new Random(); double arrival_t = a.NextDouble(); Random d = new Random(); double departure_t = d.NextDouble(); if (departure_t <= departure_p) { departure.Add(departure_t); } if (arrival_t <= arrival_p) { arrivals.Add(arrival_t); } slot++; }

Cuando uso este método me encuentro con el sistema de excepción.IndexOutOfRangeException.

 for (int i = 0; i <= arrivals.Count; i++) { delays.Add(departure[i] - arrivals[i]); } foreach (var item in delays) Console.WriteLine(item);

¿Cómo puedo hacer esto?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Si escribe i <arrivals.Count en el bucle for, el problema se resolverá. También puede usar el método Zip en Linq.

 var delay = departure.Zip(arrivals, (depart, arri) => depart - arri); foreach (var item in delay) { Console.WriteLine(item); }
over 4 years ago · Santiago Trujillo Denunciar

0

Bueno, IndexOutOfRangeException significa que el índice i excede el Count de departure o arrivals , por lo que las departure[i] - arrivals[i] se vuelven ilegales . Puede modificar el bucle for como

 for (int i = 0; i < Math.Min(arrivals.Count, depart.Count); i++) delays.Add(departure[i] - arrivals[i]); foreach (var item in delays) Console.WriteLine(item);

con i < Math.Min(arrivals.Count, depart.Count) ahora garantizamos i nunca estaré más allá de la departure y la arrivals

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda