Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 03.09.2012, 16:08   #1
АлександрАврел
Пользователь
 
Регистрация: 20.06.2012
Сообщений: 28
По умолчанию Комментарии к задаче.

Здравствуйте, помогите, пожалуйста, понять обозначение каждой строки.
Т.е. прокомментируйте каждую строку. Спасибо.

Код:
 // Выполнить
   case 5: {
      DynamicArray<DynamicArray<float> > Main;
      DynamicArray<DynamicArray<int> > Way;
      DynamicArray<float> Size;
      int One, Now, Min;
      AnsiString Str;
      Main.set_length(V + 1);
      for(I = 1; I <= V; I++) {
         Main[I].set_length(V + 1);
         for(J = 1; J <= V; J++) {
            if (SG1->Cells[J][I] == "")
               SG1->Cells[J][I] = "0";
            try {
               Main[I][J] = StrToFloat(SG1->Cells[J][I]);
               }
            catch(...) {
               SG1->Row = I;
               SG1->Col = J;
               MessageDlg("Неверное значение!", mtError, TMsgDlgButtons() << mbOK, 0);
               return;
               }
            if (Main[I][J] < 0) {
               SG1->Row = I;
               SG1->Col = J;
               MessageDlg("Неверное значение (<0)!", mtError, TMsgDlgButtons() << mbOK, 0);
               return;
               }
            }
         }
      Str = "1";
      try {
         if (!InputQuery("Начальная вершина", "Укажите начальную вершину", Str)) {
            return;
            }
         One = StrToInt(Str);
         if (One < 1 || One > V) {
            MessageDlg("Вершина V" + IntToStr(One) + " не существует!", mtError, TMsgDlgButtons() << mbOK, 0);
            return;
            }
         }
      catch(...) {
         MessageDlg("Неверное значение!", mtError, TMsgDlgButtons() << mbOK, 0);
         return;
         }
      Way.set_length(V + 2);
      Way[V + 1].set_length(V + 1);
      Size.set_length(V + 1);
      for(I = 1; I <= V; I++) {
         Way[I].set_length(1);
         Way[V + 1][I] = 0;
         Size[I] = 9999;
         }
      Size[One] = 0;
      F3->M1->Lines->Add("Начальная вершина - V" + IntToStr(One) + ".");
      F3->M1->Lines->Add("Кратчайший путь до:");
      Now = One;
      while (0 != 1) {
         for(I = 1; I <= V; I++)
            if (Main[Now][I] != 0) {
               if (Size[Now] + Main[Now][I] < Size[I]) {
                  Size[I] = Size[Now] + Main[Now][I];
                  Way[I].set_length(Way[Now].Length + 1);
                  for(J = 1; J <= Way[Now].Length - 1; J++)
                     Way[I][J] = Way[Now][J];
                  Way[I][Way[I].Length - 1] = Now;
                  }
               }
         Way[V + 1][Now] = 1;
         Min = 9990;
         for(I = 1; I <= V; I++) {
            if (Way[V + 1][I] == 0) {
               if (Size[I] < Min) {
                  Min = Size[I];
                  Now = I;
                  }
               }
            }
         Str = "";
         if (Min == 9990)
            break;
         }
      for(I = 1; I <= V; I++)
         if (I != One)
            if (Size[I] > 9990)
               F3->M1->Lines->Add("V" + IntToStr(I) + " отсутствует!");
            else {
               Str = "";
               for(J = 2; J <= Way[I].Length - 1; J++)
                  Str += "V" + IntToStr(Way[I][J]) + " ";
               Str += "V" + IntToStr(I);
               F3->M1->Lines->Add("V" + IntToStr(I) + " = " + FloatToStr(RoundTo(Size[I], -6)) + ". Маршрут: " + Str);
               }
      F3->ShowModal();
      }
   break;
АлександрАврел вне форума
Старый 03.09.2012, 16:40   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Еще раз сделаешь кросспост - забаню.
I'm learning to live...
Stilet вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Комментарии к задаче. АлександрАврел Помощь студентам 11 03.09.2012 17:23
Комментарии к задаче на Delphi Brabus Помощь студентам 0 05.12.2010 23:01