// Вычисление срока окончания public void CalcLC() { // Если не сток if (IsStartOf.Count != 0) { if (CanCalculateLC()) { OperationLogger.AddMessage("LC" + Name + " = "); // Вычисление первого значения int Min = (int)IsStartOf[0].EndDot.LC - IsStartOf[0].Duration; // Временные переменные для составления описания (логов) вычислений string FirstElemOperationLog = ((int)IsStartOf[0].EndDot.LC).ToString() + " - " + IsStartOf[0].Duration; string CalcLog = ""; if (IsStartOf.Count > 1) { OperationLogger.AppendToLastMessage("min{"); } OperationLogger.AppendToLastMessage("LC" + IsStartOf[0].EndDot.Name + " - C" + Name + IsStartOf[0].EndDot.Name); for (int i = 1; i < IsStartOf.Count; i++) { // Вычисление возможного значения int temp = (int)IsStartOf[i].EndDot.LC - IsStartOf[i].Duration; // Формирование сообщения OperationLogger.AppendToLastMessage("; LC" + IsStartOf[i].EndDot.Name + " - C" + Name + IsStartOf[i].EndDot.Name); CalcLog += "; " + ((int)IsStartOf[i].EndDot.LC).ToString() + " - " + IsStartOf[i].Duration.ToString(); // Выбор минимума if (Min > temp) { Min = temp; } } // Запись значения LC = Min; // Окончание сообщения if (IsStartOf.Count > 1) { OperationLogger.AppendToLastMessage("} = min{" + FirstElemOperationLog + CalcLog + "}"); } OperationLogger.AppendToLastMessage(" = " + LC.ToString()); } // Если сток, присваиваем значение ES } else { if (ES != null) { LC = ES; } else { throw new Exception("Сток имеет не вычисленный срок наступления"); } OperationLogger.AddMessage("LC" + Name + " = ES" + Name + " = " + LC.ToString()); } }