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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.09.2012, 13:10   #1
АлександрАврел
Пользователь
 
Регистрация: 20.06.2012
Сообщений: 28
По умолчанию Комментарии к задаче.

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

Код:
 case 5: {
      DynamicArray<DynamicArray<float> > Main;
      int K, L, Row, Col;
      AnsiString Str;
      LARGE_INTEGER TimeStart, TimeEnd, Freq;
      double WorkTime;
      // Считывание матрицы
      Main.set_length(Ur + 1);
      for(I = 1; I <= Ur; I++) {
         Main[I].set_length(Pr + 2);
         for(J = 1; J <= Pr + 1; J++) {
            if (SG1->Cells[J - 1][I] == "")
               SG1->Cells[J - 1][I] = "0";
            try {
               Main[I][J] = StrToFloat(SG1->Cells[J - 1][I]);
               }
            catch(...) {
               SG1->Row = I;
               SG1->Col = J - 1;
               MessageDlg("Неверное знач!", mtError, TMsgDlgButtons() << mbOK, 0);
               return;
               }
            }
         }
      QueryPerformanceFrequency(&Freq);
      QueryPerformanceCounter(&TimeStart);
      Row = 1;
      Col = 1;
      while (0 != 1) {
         if (Row == Ur || Col == Pr + 1) break;
         if (Main[Row][Col] == 0) {
            for(I = Row + 1; I <= Ur; I++)
               if (Main[I][Col] != 0) {
                  for(J=Col; J<=Pr+1; J++) {
                     Tmp=Main[I][J];
                     Main[I][J]=Main[Row][J];
                     Main[Row][J]=Tmp;
                     }
                  break;
                  }
            if (Main[Row][Col] == 0) {
               Col++;
               continue;
               }
            }
         for(I = Row + 1; I <= Ur; I++)
            if (Main[I][Col] != 0) {
               Tmp = Main[I][Col] / Main[Row][Col];
               Main[I][Col] = 0;
               for(J = Col + 1; J <= Pr + 1; J++)
                  Main[I][J] -= Main[Row][J] * Tmp;
               }
         Row++;
         Col++;
         }
      Row = 0;
      Col = 0;
      for(I = 1; I <= Ur; I++) {
         for(J = 1; J <= Pr; J++)
            if (Main[I][J] != 0) {
               Row++;
               break;
               }
         for(J = 1; J <= Pr + 1; J++)
            if (Main[I][J] != 0) {
               Col++;
               break;
               }
         }
      if (Row < Col) {
         MessageDlg("не имеет решений!", mtInformation, TMsgDlgButtons() << mbOK, 0);
         return;
         }
      for(I = Ur; I >= 1; I--)
         for(J = 1; J <= Pr; J++)
            if (Main[I][J] != 0) {
               Tmp = J;
               for(J = Tmp + 1; J <= Pr + 1; J++)
                  Main[I][J] = Main[I][J] / Main[I][Tmp];
               Main[I][Tmp] = 1;
               if (I != Ur)
                  for(J = Tmp + 1; J <= Pr; J++)
                     if (Main[I][J] != 0)
                        for(K = I + 1; K <= Ur; K++)
                           if (Main[K][J] == 1) {
                              Tmp = 0;
                              for(L = 1; L <= J - 1; L++)
                                 if (Main[K][L] != 0) {
                                    Tmp = 1;
                                    break;
                                    }
                              if (Tmp == 0) {
                                 for(L = J + 1; L <= Pr + 1; L++)
                                    Main[I][L] -= Main[K][L] * Main[I][J];
                                 Main[I][J] = 0;
                                 break;
                                 }
                              }
               break;
               }
      QueryPerformanceCounter(&TimeEnd);
      for(I = 1; I <= Ur; I++)
         for(J = 1; J <= Pr; J++)
            if (Main[I][J] == 1) {
               Str += "x" + IntToStr(J) + " = ";
               for(J = J + 1; J <= Pr + 1; J++)
                  if (J != Pr + 1) {
                     if (Main[I][J] != 0)
                        if (Main[I][J] * (-1) > 0)
                           Str += " + " + FloatToStr(RoundTo(Main[I][J] * (-1), -6)) + "x" + IntToStr(J);
                        else
                           Str += " - " + FloatToStr(RoundTo(Main[I][J], -6)) + "x" + IntToStr(J);
                     }
                  else
                     if (Main[I][J] != 0)
                        if (Main[I][J] > 0)
                           Str += " + " + FloatToStr(RoundTo(Main[I][J], -6));
                        else
                           Str += " - " + FloatToStr(RoundTo(Main[I][J] * (-1), -6));
               if (Str != "") {
                  F3->M1->Lines->Add(Str);
                  Str = "";
                  }
                }
      Tmp = 0;
      for(I = 1; I <= Ur; I++)
         for(J = 1; J <= Pr; J++)
            Tmp += Main[I][J];
      if (Tmp == Pr)
         F3->M1->Lines->Insert(0, "имеет ед. решение:");
      else
         F3->M1->Lines->Insert(0, "имеет мн. решений:");     
      F3->ShowModal();
      }
   break;

Последний раз редактировалось АлександрАврел; 03.09.2012 в 13:16.
АлександрАврел вне форума Ответить с цитированием
Старый 03.09.2012, 14:28   #2
Петррр
Форумчанин
 
Аватар для Петррр
 
Регистрация: 02.09.2011
Сообщений: 336
По умолчанию

Что конкретно вам не понятно? Если все тогда открывайте книгу если нет, то спрашивайте.
Если ты не можешь найти то, ради чего стоит жить, лучше найти то, за что стоит умереть
Петррр вне форума Ответить с цитированием
Старый 03.09.2012, 15:02   #3
АлександрАврел
Пользователь
 
Регистрация: 20.06.2012
Сообщений: 28
По умолчанию

вы можете прокоментировать каждую строку?
АлександрАврел вне форума Ответить с цитированием
Старый 03.09.2012, 15:03   #4
Петррр
Форумчанин
 
Аватар для Петррр
 
Регистрация: 02.09.2011
Сообщений: 336
По умолчанию

Могу (10 символов)
Если ты не можешь найти то, ради чего стоит жить, лучше найти то, за что стоит умереть
Петррр вне форума Ответить с цитированием
Старый 03.09.2012, 15:03   #5
АлександрАврел
Пользователь
 
Регистрация: 20.06.2012
Сообщений: 28
По умолчанию

Цитата:
Сообщение от АлександрАврел Посмотреть сообщение
вы можете прокоментировать каждую строку?
очень надо, сам пытался, препад говорит неправильно, разбирайся.

Пожалуйста, горю.

Последний раз редактировалось Stilet; 03.09.2012 в 16:41.
АлександрАврел вне форума Ответить с цитированием
Старый 03.09.2012, 15:07   #6
Петррр
Форумчанин
 
Аватар для Петррр
 
Регистрация: 02.09.2011
Сообщений: 336
По умолчанию

АлександрАврел что именно не понятно?
Если ты не можешь найти то, ради чего стоит жить, лучше найти то, за что стоит умереть
Петррр вне форума Ответить с цитированием
Старый 03.09.2012, 15:10   #7
АлександрАврел
Пользователь
 
Регистрация: 20.06.2012
Сообщений: 28
По умолчанию

просто сказать по коду, что обозначает строка.

я путаюсь с матрицами.

Последний раз редактировалось Stilet; 03.09.2012 в 16:40.
АлександрАврел вне форума Ответить с цитированием
Старый 03.09.2012, 15:39   #8
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

ты не умеешь таблички рисовать ?
или не понимаешь что, каждый элемент таблички определяется строчкой и столбцом ...
mas [i][j] - это элемент в табличке mas, в строке i и столбце j ...
...
что тут не ясно... вся программа ... на этом написана ... расписывать нечего ... не понимая этого к преподу даже садиться нечего.
Skype : UASm1Le.
Sm1Le вне форума Ответить с цитированием
Старый 03.09.2012, 15:45   #9
АлександрАврел
Пользователь
 
Регистрация: 20.06.2012
Сообщений: 28
По умолчанию

что обозначает выражение Tmp = Main[I][Col] / Main[Row][Col];

что это значит?
Tmp = Main[I][Col] / Main[Row][Col];

Последний раз редактировалось Stilet; 03.09.2012 в 16:54.
АлександрАврел вне форума Ответить с цитированием
Старый 03.09.2012, 16:03   #10
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Переменной Tmp присваивается значение, равное отношению элемента матрицы Main, индексы которого I и Col к элементу той же матрицы и индексами Row и Col.
Вадим Мошев вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
комментарии Shinobig Помощь студентам 5 17.01.2012 14:54
Комментарии к задаче на Delphi Brabus Помощь студентам 0 05.12.2010 23:01
КОММЕНТАРИИ к прогр-ме на СИ++ Olechka3000 Помощь студентам 0 16.06.2010 21:12