Home c++ Why nan (ind) error?

# Why nan (ind) error?

Author

Date

Category

I’m trying to reduce the matrix to triangular form.
On

input

``````4
10 23 17 44 25
15 35 26 69 40
25 57 42 108 65
30 69 51 133 95
``````

// at the entrance takes the size of the matrix

``````# define _CRT_SECURE_NO_WARNINGS
#Include & lt; iostream & gt;
Using Namespace STD;
INT MAIN () {
freopen ( "input.txt", "r", stdin);
freopen ( "output.txt", "w", stdout);
int n;
CIN & GT; & GT; n;
int m = n + 1; // Size matrritsy with vektorm b [n] [m]
double a  ;
For (int i = 0; i & lt; n; i ++) {
for (int j = 0; j & lt; m; j ++)
CIN & GT; & GT; a [i] [j];
}
//// check that the first element of the first column is not equal to 0
for (int i = 0; i & lt; n-1; i ++) {
for (int i = 0; i & lt; n - 1; i ++) {
if (a [i]  == 0) {
for (int y = 0; y & lt; m; y ++) {
int z = a [i] [y];
a [i] [y] = a [i + 1] [y];
a [i + 1] [y] = z;
}
}
}
}
For (int i = 0; i & lt; n; i ++) {
for (int j = 0; j & lt; m; j ++)
COUT & LT; & LT; A [i] [j] & lt; & lt; "";
COUT & LT; & LT; Endl;
} // derived matrix
// COUT & LT; & LT; Endl;
// give a triangular form
for (int i = 0; i & lt; n - 1; i ++) {
{
if (a [i] [i]! = 0) {
for (int k = i; k & lt; n - 1; k ++) {
float s = a [k + 1] [i] / a [k] [i];
for (int x = i; x & lt; m; x ++) {
float c = a [k] [x] * (-1) * s;
a [k + 1] [x] = a [k + 1] [x] + c;
}
}
}
}
}
COUT & LT; & LT; Endl;
For (int i = 0; i & lt; n; i ++) {
for (int j = 0; j & lt; m; j ++)
COUT & LT; & LT; A [i] [j] & lt; & lt; "";
COUT & LT; & LT; Endl;
} // derived matrix
}
``````

Because you divide by 0.

Record

``````assert (a [k] [i] = 0!);
``````

before

``````float s = a [k + 1] [i] / a [k] [i];
``````

and see for yourself …

This is not surprising – after all the matrix

``````October 23 17 44
15 35 26 69
25 57 42 108
30 69 51 133
``````

degenerate, its determinant is equal to 0 …

p.s. Something strange you have a nested loop

``````for (int i = 0; i & lt; n-1; i ++) {
for (int i = 0; i & lt; n - 1; i ++) {
``````

No? `i `in the nested loop hides `i `from the external, and further doubt … `int z = a [i] [y]; `is also somehow not comme il faut 🙂 – why `double `to `int `cut
?
But the main thing – what is the point in the inspections before conversions? It is in the course of their regular support member can be zero! Take a simple matrix-type

``````January 1
eleven
``````

or manually, make sure that your first check is working, but after the first iteration of the transformation you get zero second line – and no checks such troubles you have no

.

Why spend time searching for the correct question and then entering your answer when you can find it in a second? That's what CompuTicket is all about! Here you'll find thousands of questions and answers from hundreds of computer languages.