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

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

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

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

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

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

можете вы прокомментировать, строки?

или можно , я прокомментирую а вы исправите?

разделил на 2 части , много символов пишет.
Код:
case 5: {
      DynamicArray<DynamicArray<float> > Main; \\создание динамического массива типа float;
      int K, L, Row, Col;                                    \\создание переменных k, L, ROW, COL;
      AnsiString Str;                                         \\ ?
      LARGE_INTEGER TimeStart, TimeEnd, Freq;    \\ ?
      double WorkTime;                                      \\ ?
      // Считывание матрицы
      Main.set_length(Ur + 1);                              \\?
      for(I = 1; I <= Ur; I++) {                              \\ для i=1,где i<=ur и увеличивается к след. эл. масс.;
         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";                      \\ если в массиве(матрице) эл.=0;        
            try {                                                      \\то
               Main[I][J] = StrToFloat(SG1->Cells[J - 1][I]); \\матрица [i][j] конвертируется в дробное число;
               }
            catch(...) {                                               \\ и т.д.
               SG1->Row = I;                                        
               SG1->Col = J - 1;                                     \\столбц переходит к следующему эл.; и выводится сообщение.
               MessageDlg("Неверное знач!", mtError, TMsgDlgButtons() << mbOK, 0);                                                              
               }
            }
         }
      QueryPerformanceFrequency(&Freq);                     \\ ?
      Row = 1;                                                           
      Col = 1;
      while (0 != 1) {                                                 \\ ?
         if (Row == Ur || Col == Pr + 1) break;                
         if (Main[Row][Col] == 0) {                                \\ если матреца=0(т.е. определитель=0(решение матрицы методом Гаусса))
            for(I = Row + 1; I <= Ur; I++)                        \\ для (I = Row + 1; I <= Ur; I++) ;
               if (Main[I][Col] != 0) {                                \\ если ?
                  for(J=Col; J<=Pr+1; J++) {                        \\ для J=Col; 
                     Tmp=Main[I][J];                                   \\ Main[I][J] записывается в буферную переменную Tmp;
                     Main[I][J]=Main[Row][J];                        \\ главная матрица меняется на новую Main[Row][J];
                     Main[Row][J]=Tmp;                                \\ нновой матрице присваивается Tmp(значение новой матрицы);
                     }
                  break;
                  }
            if (Main[Row][Col] == 0) {                                 \\ теперь если Main[Row][Col]=0, то;
               Col++;                                                         \\ к следующему столбцу;
               continue;                                                      \\ и так до конца матрицы
               }
            }
         for(I = Row + 1; I <= Ur; I++)                                  \\ для I = Row + 1; I <= Ur;
            if (Main[I][Col] != 0) {                                         \\ если Main[I][Col] не равна 0;то
               Tmp = Main[I][Col] / Main[Row][Col];                  \\ Main[I][Col] меняются местами Main[Row][Col] и заносится в TMP;
               Main[I][Col] = 0;                                              \\ Main[I][Col] обнуляется (все эл. = 0);
               for(J = Col + 1; J <= Pr + 1; J++)                         \\ для J = Col + 1; J <= Pr + 1;
                  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) {                                               \\ если новая матрица не =0 ; то
               Col++;                                                              \\ к след.   
               break;
               }
         }

Последний раз редактировалось Stilet; 03.09.2012 в 17:34.
АлександрАврел вне форума Ответить с цитированием
Старый 03.09.2012, 17:23   #12
АлександрАврел
Пользователь
 
Регистрация: 20.06.2012
Сообщений: 28
По умолчанию

2 часть
Код:
 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;                                                               \\то столбец заносится в буф. пер. Tmp; 
               for(J = Tmp + 1; J <= Pr + 1; J++)                              \\?  
                   Main[I][J] = Main[I][J] / Main[I][Tmp];                    \\ Main[I][J] и Main[I][Tmp] меняются местами и Main[I][Tmp] заносится в Tmp
               Main[I][Tmp] = 1;                                                    \\?
               if (I != Ur)                                                               \\?
                  for(J = Tmp + 1; J <= Pr; J++)                                 \\?
                     if (Main[I][J] != 0)                                               если матрица не =0; то
                        for(K = I + 1; K <= Ur; K++)                              \\ K = I + 1; K <= Ur;
                           if (Main[K][J] == 1) {                                    \\если эл. новой матрица =1, то
                              Tmp = 0;                                                  буф. пер. обнуляется;                
                              for(L = 1; L <= J - 1; L++)                          \\ а для L = 1; L <= J - 1;   
                                 if (Main[K][L] != 0) {                               \\ если Main[K][L] не = 0,то 
                                    Tmp = 1;                                            \\буф. пер. =1;
                                    break;                                                \\ конец цикла;
                                    }
                              if (Tmp == 0) {                                          \\   если Tmp=0 то
                                 for(L = J + 1; L <= Pr + 1; L++)                 \\ L = J + 1; L <= Pr + 1;
                                    Main[I][L] -= Main[K][L] * Main[I][J];       \\?
                                 Main[I][J] = 0;                                         \\ матрица =0;
                                 break;
                                 }
                              }
               break;
               }
[/CODE]
исправьте.

Последний раз редактировалось АлександрАврел; 03.09.2012 в 17:59.
АлександрАврел вне форума Ответить с цитированием
Ответ


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



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