#include <iostream>
using namespace std;
int main() {
float cnst, div;
const int a = 4, b = 5;
float arr[a][b]{
{1, 2, 3, 4, 5},
{2, 3, 4, 5, 6},
{3, 4, 5, 6, 7},
{4, 5, 6, 7, 8}
};
for (int k = 0; k < a; k++) {
if (arr[k][k] != 1) {
div = arr[k][k];
for (int h = k; h < b; h++) {
arr[k][h] /= div;
}
}
for (int i = 0; i < a; i++) {
if (i == k)
continue;
cnst = -arr[i][k];
for (int j = k; j < b; j++) {
arr[i][j] += arr[k][j] * cnst;
}
}
}
for (int i = 0; i < a; i++) {
for (int j = 0; j < b; j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
system("pause");
return 0;
}
Написал некий фрагмент кода (вообще пишу решение СЛАУ методом Гаусса), при данных значениях а и b, когда k >= 2 возникает ошибка -nan(ind) и nan (когда как, в зависимости от значений). Помогите исправить. И еще, после каких вычислений или из-за чего в С++ появляется значение -0? Спасибо!)
У вас после итерации k = 1
на диагонали появляются нулевые элементы. На следующей итерации по k
в первом цикле происходит деление на 0
со всеми вытекающими.
При реализации "метода Гаусса" во всех его проявлениях надо помнить о возможности возникновения нулей на диагонали.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Задача написать функцию на С++,переводящую число X из 10 системы счисления в 3
Что такое "Thunk" в контексте виртуальных функций?(Как работает?)
Я начинающий в программированииЧитая книгу о С++ в главе посвященной указателям (в частности оператору delete), я наткнулся на то, что в среде...