public void посадкаПассажира(Пассажир пас) { //расчет среднего ожидания времени на остановке и количества отправленных пассажиров СуммКолОтпрПассажиров++; //текущее среднее значение расчитывается так: ср[n+1]=(cp[n]*n+x[n+1])/(n+1) СредВремяОжидНаОст = (СредВремяОжидНаОст * (СуммКолОтпрПассажиров - 1) + пас.времяОжиданияНаОстановке) / СуммКолОтпрПассажиров; }
////запись пассажира в массивПассажиров public bool ДобавитьПассажира(Пассажир пас) { if (!Заполнен) { пас.КодМаршрута = КодМаршрута; массивПассажиров.Add(пас); показателиРаботы.посадкаПассажира(пас, номерСледОстановки, маршрут.СтоимостьПроезда); return(true); } else { return(false); } }
//public static void ЗаписатьПас(List<Пассажир> listPas) //{ // ПропуститьСтроку(); // Записать("Код", "ост отправ", "ост пересадки", "ост назнач", "время появл", "время посадки", // "время приезда", "код маршрута", "кол пересадок", "число полных ТС"); // foreach (Пассажир pas in listPas) // Записать(pas.Код, pas.КодОстОтправления, pas.КодОстПересадки, pas.КодОстНазначения, // pas.ВремяПоявленияНаОстановке, pas.ВремяПосадки, pas.ВремяПриезда, pas.КодМаршрута, pas.КолПересадок, pas.КолПропущенныхПолныхТС); //} //записать данные про пассажиров public static void ЗаписатьПас(List <Пассажир> listPas) { if (listPas.Count < 1000000) { ПропуститьСтроку(); Записать("Код", "ост отправ", "ост пересадки", "ост назнач", "время появл", "время посадки", "время приезда", "код маршрута", "кол пересадок", "число полных ТС"); foreach (Пассажир pas in listPas) { Записать(pas.Код, pas.КодОстОтправления, pas.КодОстПересадки, pas.КодОстНазначения, pas.ВремяПоявленияНаОстановке, pas.ВремяПосадки, pas.ВремяПриезда, pas.КодМаршрута, pas.КолПересадок, pas.КолПропущенныхПолныхТС); } } else { int countM = listPas.Count / 1000000; int count = listPas.Count % 1000000; int row = 2, col = 1; //запись миллионов пассажиров for (int i = 0; i < countM; i++) { Записать2(row++, col, "Код", "ост отправ", "ост пересадки", "ост назнач", "время появл", "время посадки", "время приезда", "код маршрута", "кол пересадок", "число полных ТС"); for (int j = 0; j < 1000000; j++) { Пассажир pas = listPas[i * 1000000 + j]; Записать2(row++, col, pas.Код, pas.КодОстОтправления, pas.КодОстПересадки, pas.КодОстНазначения, pas.ВремяПоявленияНаОстановке, pas.ВремяПосадки, pas.ВремяПриезда, pas.КодМаршрута, pas.КолПересадок, pas.КолПропущенныхПолныхТС); } row = 2; col += 10; } //запись остатков пассажиров countM *= 1000000; Записать2(row++, col, "Код", "ост отправ", "ост пересадки", "ост назнач", "время появл", "время посадки", "время приезда", "код маршрута", "кол пересадок", "число полных ТС"); for (int i = 0; i < count; i++) { Пассажир pas = listPas[countM + i]; Записать2(row++, col, pas.Код, pas.КодОстОтправления, pas.КодОстПересадки, pas.КодОстНазначения, pas.ВремяПоявленияНаОстановке, pas.ВремяПосадки, pas.ВремяПриезда, pas.КодМаршрута, pas.КолПересадок, pas.КолПропущенныхПолныхТС); } } }
public void появлениеПассажира(Пассажир пас, bool пересадочный = false) { СуммКолПересадочПассажиров += (пересадочный ? 1 : 0); СуммКолПоявившПассажиров++; }
public void высадкаПассажира(Пассажир пас) { СуммКолПрибПассажиров++; }