Практикум по курсу "Объектно-ориентированное программирование" на языке C#. Андрианова А.А - 41 стр.

UptoLike

40
if(i == n - 1 - count_null_cols)
{
// элементов, которые могут быть
// ведущими, больше нет
count_null_cols++;
break;
}
// меняем местами столбцы - текущий и
// последний из непросмотренных
for(int j = 0; j < m; j++)
{
double t = A[j, i];
A[j, i] = A[j, n-count_null_cols-1];
A[j, n-count_null_cols-1] = t;
}
// отражаем смену столбцов в перестановке
int te = reoder[i];
reoder[i] = reoder[n-count_null_cols-1];
reoder[n-count_null_cols-1] = te;
count_null_cols++;
// далее пытаемся провести исключения
// с той же строкой
i--;
}
else
{
// нашли в столбце элемент, который может
// быть ведущим - меняем местами строки
for(int l=0; l<n; l++)
{
double t = A[i, l];
A[i, l] = A[k, l];
A[k, l] = t;
}
double p = B[0, i];
B[0, i] = B[0, k];
B[0, k] = p;
// далее пытаемся провести исключения
// с той же строкой
i--;
}
}
}
// вычисление ранга матрицы после проведения исключения
rang = m < n-count_null_cols ? m : n-count_null_cols;
// подсчет количества нулевых строк матрицы
int null_rows = m - rang;
// проверка на несовместность системы –
// если в нулевой строке
// свободный член не равен нулю
for(int i = rang; i < m; i++)
           if(i == n - 1 - count_null_cols)
           {
              // элементов, которые могут быть
              // ведущими, больше нет
              count_null_cols++;
              break;
           }
           // меняем местами столбцы - текущий и
           // последний из непросмотренных
           for(int j = 0; j < m; j++)
           {
              double t = A[j, i];
              A[j, i] = A[j, n-count_null_cols-1];
              A[j, n-count_null_cols-1] = t;
           }
           // отражаем смену столбцов в перестановке
           int te = reoder[i];
           reoder[i] = reoder[n-count_null_cols-1];
           reoder[n-count_null_cols-1] = te;
           count_null_cols++;
           // далее пытаемся провести исключения
           // с той же строкой
           i--;
        }
        else
        {
           // нашли в столбце элемент, который может
           // быть ведущим - меняем местами строки
           for(int l=0; l