#include
// потерялось
using namespace std;
int main (){
// Запомнили целое число 4 в n
const int n=4;
double sum = 0;
// Создали массив 4x4 и заполнили его
double A [ n ][ n ]= {
{ 2, -5,6,1},
{ -16, 48,-55,-5},
{ 0, 24,-25,10},
{8,21,30,4 }
};
// Создали пустые массивы L и U и не стали заполнять
double L [ n ][ n ];
double U [ n ][ n ];
for (int i = 0; i < n; i++){
for (int j = 0; j < n; j++){
// Обнуляем значения в массивах L и U
L [j] = 0;
U [j] = 0;
// Если попали на диагональ массива, то L соотвествующую ячейку заполняем единицей
if (i == j)
L [j] = 1;
}
} // Вот тут мы ставим лишние фигурные скобки, потому что мы сатанисты.
// Вообще это кусок для наркоманов, потому как далее мы опять берем нулевую ячейку и перезаписываем её
{
L [0] = A [0]/ A [0][0];
U [0] = A [0] / L [0][0];
}
for (int i = 0; i < n; i++){
for (int j = 0; j < n; j++){
// Записываем в массив U соответствующее значение из массива A
U [0][ i] = A[0][ i];
// В этом месте компилятор шлёт нас нахер, потому что L[] и A[] это указатели, которые мы с каких то радостей начинаем делить.
L [ 0] = A[ 0] / U[0][ 0];
// Второй раз объявляем переменную sum. Автор хотел этим подчеркнуть, что рассказать о себе один раз бывает недостаточно.
double sum = 0;
for (int k = 0; k < i; k++){
// Суммируем все находится в столбце J и не превышает строку I.
// Тут мы снова идем нахер потому что L[] это не число.
sum += L[ k] * U[k][ j];
}
// И снова идем нахер
U[ j] = A[ j] - sum;
// Заполняем нулями треугольник выше диагонали
// ? 0 0 0
// ? ? 0 0
// ? ? ? 0
// ? ? ? ?
// Как то так
if (i > j){
L[j][ i] = 0;
}
else{
// Делаем математические фокусы при подчёте мистической суммы
sum = 0;
for (int k = 0; k < i; k++){
sum += L[j][ k] * U[k][ i];
}
// Заполняем массив L по формуле представленной ниже и опять идем нахер потому что U[]
L[j][ i] = (A[j][ i] - sum) / U[ i];
}
}
}
cout « "\n\n";
// Error: operator &ostream <<(double*) is not defined
// Защем так делать?
// Видимо, автор хотел вывести массив L и заполнить диагональ нулями
for (int i = 0; i < n; i++){
for (int j = 0; j < n; j++){
if (i == j)
L [j] = 1;
cout « " " « L [j] « " ";
}
cout « "\n\n";
}
cout « "\n\n";
// А тут мы неправильно выводим массив U
for (int i = 0; i < n; i++){
for (int j = 0; j < n; j++)
cout « " " « U [j] « " ";
cout « "\n\n";
}
return 0;
}
Нажмите, чтобы раскрыть...