-nan(ind) и nan

131
28 сентября 2019, 17:50
#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? Спасибо!)

Answer 1

У вас после итерации k = 1 на диагонали появляются нулевые элементы. На следующей итерации по k в первом цикле происходит деление на 0 со всеми вытекающими.

При реализации "метода Гаусса" во всех его проявлениях надо помнить о возможности возникновения нулей на диагонали.

READ ALSO
C++ захват переменной из лямбда функции

C++ захват переменной из лямбда функции

есть такая функция, которая принимает другую функцию:

124
динамический массив с++ [закрыт]

динамический массив с++ [закрыт]

Задача написать функцию на С++,переводящую число X из 10 системы счисления в 3

134
&ldquo;Thunk&rdquo; в контексте виртуальных функций

“Thunk” в контексте виртуальных функций

Что такое "Thunk" в контексте виртуальных функций?(Как работает?)

102
С++. Указатели. Операция delete

С++. Указатели. Операция delete

Я начинающий в программированииЧитая книгу о С++ в главе посвященной указателям (в частности оператору delete), я наткнулся на то, что в среде...

122