Пример #1
0
        // Вычисление срока окончания
        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());
            }
        }