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 [4] [5];
  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] == 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
}

Answer 1, Authority 100%

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

.

Programmers, Start Your Engines!

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.

Recent questions