static void PrintDelaysForEachAirline(string origin, string destination)
{
List<Airline> airlinesOnRoute = new List<Airline>();
string[] lines = File.ReadAllLines(AirlinePerformanceFileName);
for (int i = 1 /* We skip the first line */; i < lines.Length; ++i)
{
string line = lines[i];
string[] parts = line.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
if (parts.Length != 7)
continue;
if (parts[1] == origin && parts[2] == destination)
{
// Add data to the list of matching airlines on route
airlinesOnRoute.Add(new Airline
{
AirlineCode = parts[0],
ArrivalDelay = int.Parse(parts[4])
});
}
}
if (airlinesOnRoute.Count == 0)
{
Console.WriteLine("There are no flights on this route.");
return;
}
Console.WriteLine("\nThere a total of {0} flights along this route.", airlinesOnRoute.Count);
Console.WriteLine("Below is the break down of these flights according to airline:\n");
string codeOfCurrentAirline = "";
int maxDelay = int.MinValue;
int totalArrivalDelay = 0;
int totalFlightsOfCurrentAirline = 0;
int avgArrivalDelay = 0;
foreach (Airline airline in airlinesOnRoute)
{
//Get the first airline
if (codeOfCurrentAirline == "")
codeOfCurrentAirline = airline.AirlineCode;
maxDelay = Math.Max(maxDelay, airline.ArrivalDelay);
totalArrivalDelay += airline.ArrivalDelay;
totalFlightsOfCurrentAirline++;
// If the iterator moves to the next airline or this was the last item in the list
// report the data related to the previous airline and clear variables
if (codeOfCurrentAirline != airline.AirlineCode || airline.Equals(airlinesOnRoute[airlinesOnRoute.Count - 1]))
{
if (totalFlightsOfCurrentAirline != 0) avgArrivalDelay = totalArrivalDelay / totalFlightsOfCurrentAirline;
Console.WriteLine(
"There were {0} flights between these airports for airline {1}.\n" +
"The average delay for this airline is {2} minutes.\n" +
"The maximum delay for this airline is {3} minutes.\n\n",
totalFlightsOfCurrentAirline, codeOfCurrentAirline, avgArrivalDelay, maxDelay);
totalArrivalDelay = 0;
totalFlightsOfCurrentAirline = 0;
maxDelay = 0;
codeOfCurrentAirline = airline.AirlineCode;
}
}
}