Комментарии К Задаче.

Тема в разделе "Borland C++ Builder & Kylix", создана пользователем -, 3 сен 2012.

Статус темы:
Закрыта.
  1. Гость

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

    Код:

    Код (C++):
    // Выполнить
    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;
     
  2. Eleno4ka

    Eleno4ka Гость

    спал на лекции? ^_^
     
Загрузка...
Похожие Темы - Комментарии Задаче
  1. lexflax
    Ответов:
    0
    Просмотров:
    1.081
  2. tearofwolf
    Ответов:
    1
    Просмотров:
    4.434
  3. vbs
    Ответов:
    9
    Просмотров:
    4.997
  4. Jenyyy
    Ответов:
    0
    Просмотров:
    799
  5. likan
    Ответов:
    1
    Просмотров:
    1.073
Статус темы:
Закрыта.

Поделиться этой страницей