0 / 0 / 0
Регистрация: 14.11.2010
Сообщений: 4
1

invalid floating point operation

21.11.2010, 03:40. Показов 1209. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
помогите решить вот такую вот задачу:

Коэффициенты системы линейных уравнений заданы в виде квадратной матрицы. С помощью допустимых преобразований привести матрицу к треугольному виду.
Найти количество строк, среднее арифметическое которых меньше заданной величины.
т.е. надо из матрицы
1 2 3
1 4 10
1 8 32
получить следующую матрицу
1 2 3
0 2 7
0 0 4

в выделенной строке выдает ошибку

invalid floating point operation

помогите пожалуйста, а то я не понимаю что делать

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
 
int main(int argc, char* argv[])
{
   int N;
   int i, j;
   int kol = 0;
   double sum = 0;
 
   // задание в качестве первого числа последовательности текущего времени
   srand(time(NULL));
 
   cout << "Enter dimension of a array" << endl;
   cin >> N;
 
   double **Array = new double*[N];
   for( i = 0; i < N; i++ )
   {
      Array[i] = new double[N];
   };
 
   double min;
   cout << "Threshold value is " << endl;
   cin >> min;
 
 
 
   for(i = 0; i < N; i++)
   {
      for(j = 0; j < N; j++)
      {
        // Генерация элементов в диапазоне от -250 до 250
        Array[j][i] = (rand()%31 - 15);
        cout << "a[" << j+1 <<"][" << i+1<< "]= " <<Array[j][i]<<'\t';
        sum += Array[j][i]/N;
      }
      cout << endl;
      if (sum <= min)
         kol++;
      sum = 0;
   }
 
   for(i = 0; i < N-1; i++)
   {
      for( j = i; j < N; j++)
      {
         if(Array[i][i] != 0)
         {
            for(int k = 0; k < N; k++)
            {
[B][COLOR="Black"]               Array[j][k] = (long double)Array[j][k] *(1-(Array[j][i])*1.0/(Array[i][i]));[/COLOR][/B]
            }
         }
      }
   }
   for(i = 0; i < N; i++)
   {
      for(j = 0; j < N; j++)
      {
        cout << "a[" << j+1 <<"][" << i+1<< "]= " <<Array[j][i]<<'\t';
      }
      cout << endl;
   }
 
   for(i = 0; i < N; i++ ) {
        delete [] Array[i];
   }
   delete [] Array;
 
   getchar();
   getchar();
 
   return 0;
}
 
 
//---------------------------------------------------------------------------
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.11.2010, 03:40
Ответы с готовыми решениями:

Floating Point Exception
Здравствуйте! Подскажите, пожалуйста, почему при решении методом Рунге-Кутта системы диффуров вида...

Floating Point:Square Root of Negative Number
После запуска программы в Borland C++ вылезает следующая ошибка Floating Point:Square Root of...

Invalid floating point operation
определяю массивы, заполняю нулями: float B1, B2; for(int i=0;i&lt;200;i++) {B1=0, B2=0;} В...

Invalid floating point operation
Как отладить такую ошибку? В функции достаточно много различных вычислений, на ее вход каждый такт...

5
Українець
424 / 318 / 16
Регистрация: 26.09.2009
Сообщений: 844
21.11.2010, 03:54 2
мб, деление на ноль?
0
0 / 0 / 0
Регистрация: 14.11.2010
Сообщений: 4
21.11.2010, 11:22  [ТС] 3
так где это деление на ноль, я кажись проверяю равняется ли это число нулем или нет
0
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
21.11.2010, 13:00 4
Странно, что тебе выдают такую ошибку, потому что с даблами можно как угодно работать. Судя по результату, у тебя там не просто деление на ноль (выдавалось бы "inf" или "-inf"), а деление нуля на ноль (выдаётся "nan"). Какой компилятор?

Но ошибка в логике программы действительно есть.
0
0 / 0 / 0
Регистрация: 14.11.2010
Сообщений: 4
21.11.2010, 16:40  [ТС] 5
да действительно там деление на ноль =(
у меня вложенный цикл потом изменяет значение элемента массива, а я так долго мучался =(
немного с математикой ступил =)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
   for(i = 0; i < N-1; i++)
   {
      for( j = i+1; j < N; j++)
      {
         if(Array[i][i] != 0)
         {
            long double koef = Array[i][j]/Array[i][i];
            for(int k = 0; k < N; k++)
            {
               Array[k][j] -= Array[k][i]*koef;
            }
         }
      }
   }
0
Українець
424 / 318 / 16
Регистрация: 26.09.2009
Сообщений: 844
21.11.2010, 23:09 6
Незачто=)
0
21.11.2010, 23:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.11.2010, 23:09
Помогаю со студенческими работами здесь

Float - Invalid floating point operation
есть функция float TForm1::Calc( float f2, float f1, float f3, float f4, float C2, float af2,...

Invalid floating point operation в Builder 6.0
Здравствуйте. У меня проблема. Несколько месяцев назад делал программы для диплома в Borland C++...

Ошибка 'invalid floating point operation'
Здравствуйте. сделал задачу, при вводе значения &quot;0&quot; выдает ошибку, и выкидывает с программы. с чем...

Объясните ошибку - Invalid floating point operation
Invalid floating point operation что это за ошибка???? очень нужно!!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru