Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/29: Рейтинг темы: голосов - 29, средняя оценка - 4.86
1 / 1 / 2
Регистрация: 13.03.2012
Сообщений: 382
1

Ошибка “Invalid floating point operation”

06.04.2017, 14:58. Показов 5794. Ответов 37
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  procedure StsMasID(masID: array of real;szmID:integer;var mo,disp: real);
   var
   i: integer;
   sum: real ;
   begin
     sum:= 0;
     for i := 0 to szmID-1 do
        sum:=sum + masID[i];
      mo := sum/szmID;         // на это ругается
      sum:= 0;   
     for i := 0 to szmID-1 do
        sum:=sum + (masID[i]-mo)*(masID[i]-mo);
      disp:=sum/(szmID-1);
  end;
Delphi
1
ошибка в этой строчке  mo := sum/szmID;
ввожу такие параметры

Ошибка “Invalid floating point operation”
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.04.2017, 14:58
Ответы с готовыми решениями:

Ошибка: Invalid floating point operation
Проект вызвал исключение класса Einvalidop с сообщением Invalid floating point operation. Процесс...

Ошибка Invalid floating point operation
Помогите пожалуйста. Переделываю программу с Паскаля на Дельфи и возникла ошибка Project raised...

Ошибка: Invalid floating point operation
Привет! вот такая вот ошибка после нажатия Button: Project Project1.exe raised exception class...

Ошибка: Invalid floating point operation
Привет. Программа выдает ошибку "Invalid floating point operation", если значение y 1 и меньше, но...

37
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,251
06.04.2017, 23:24 21
Author24 — интернет-сервис помощи студентам
Этот рисунок не имеет отношения к TFrmProizvIS.FormCreate. Но ошибку тут ты действительно не получаешь. Потому что хотя этот обработчик написан, к форме он не подключен. А ошибка совсем в другом месте.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
function Erlang(L:real; k: integer):real;
  var
   j: integer;
   x,s: real;
 begin
     randomize;
     s:= 0;
  for j:= 1 to k do
      s:=s+ln(random(k));   //Если s = 0 и random(k) = 0, то получите деление на 0
    x:= - 1/(L)*s;
Erlang:=x;
end;
1
1 / 1 / 2
Регистрация: 13.03.2012
Сообщений: 382
07.04.2017, 00:07  [ТС] 22
тут согласен, а как исправить это? ведь у меня глубже эта ошибка идет, вот сюда уже приходит по нулям и делится на ноль
Delphi
1
      s:=s+ln(random(k));   //Если s = 0 и random(k) = 0, то получите деление на 0
0
1437 / 1014 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
07.04.2017, 00:14 23
хотя бы так:
Delphi
1
2
3
if random(k) > 0 then begin
s:=s+ln(random(k));
end;
0
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,251
07.04.2017, 00:37 24
Цитата Сообщение от Matan! Посмотреть сообщение
хотя бы так:
Забавный код
Цитата Сообщение от wolf777 Посмотреть сообщение
как исправить это?
Хотя бы так
Delphi
1
2
3
4
5
6
7
var
j, N : Integer;
...
  for j:= 1 to k do begin
    N:=random(k);
    if N <> 0 then s:=s+ln(N);
  end;
Хотя честно признаюсь я не знаю что делает функция Erlang
0
1437 / 1014 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
07.04.2017, 00:39 25
Цитата Сообщение от northener Посмотреть сообщение
Забавный код
Чем же?
0
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,251
07.04.2017, 00:42 26
Цитата Сообщение от Matan! Посмотреть сообщение
Чем же?
Повторным вызовом random(k) после проверки
1
1 / 1 / 2
Регистрация: 13.03.2012
Сообщений: 382
07.04.2017, 00:45  [ТС] 27
а как можно проверить, то что я ввожу с клавиатуры эти данные записываются в переменные или нет?
0
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,251
07.04.2017, 00:48 28
Для этого и существует отладчик.
И кнопки F5, F9, F8, F7 и F4.
0
1 / 1 / 2
Регистрация: 13.03.2012
Сообщений: 382
07.04.2017, 00:48  [ТС] 29
просто прописал как посоветовал northener
Delphi
1
2
3
4
5
6
7
8
9
10
11
function Erlang(L:real; k: integer):real;
  var
   j, N: integer;
   x,s: real;
 begin
     randomize;
     s:= 0;
  for j:= 1 to k do
  N:=random(k);
    if N <> 0 then s:=s+ln(N);
  end;
все равно отладчик ругается на
Delphi
1
mo := sum/szmID;
та ошибка которая была изначально
0
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,251
07.04.2017, 00:50 30
Цитата Сообщение от wolf777 Посмотреть сообщение
как посоветовал northener
Ну ты хоть внимательнее посмотри на мой код. Он очень другой!
0
1 / 1 / 2
Регистрация: 13.03.2012
Сообщений: 382
07.04.2017, 00:54  [ТС] 31
если судить по отладчику то данные которые я ввожу с клавиатуры они не записываются в переменные, а именно

Delphi
1
2
FrmProizvIS.EditLO.Text:=FloatToStr(Lo);
       FrmProizvIS.EditKO.Text:=FloatToStr(Ko);
на выходи у них почему то значение 0, хотя с клавиатуры я указываю что LO=3,1 а KO = 4 и аналогично, все остальные переменные, которые передают значение с клавиатуры равны нулю

Добавлено через 1 минуту
Цитата Сообщение от northener Посмотреть сообщение
Ну ты хоть внимательнее посмотри на мой код. Он очень другой!
согласен я внимательно посмотрел твой код и посмотрел проверку на 0, просто я так понимаю что с клавиатуры не передаются данные
0
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,251
07.04.2017, 01:02 32
Цитата Сообщение от wolf777 Посмотреть сообщение
я внимательно посмотрел твой код и посмотрел проверку на 0, просто я так понимаю что с клавиатуры не передаются данные
1. Ты посмотрел не внимательно. В результате твой код из #29 отличается от моего очень существенно.
2. После моего изменения твоего кода у меня ошибки при нажатии кнопки "Обновить" пропали.
0
1 / 1 / 2
Регистрация: 13.03.2012
Сообщений: 382
07.04.2017, 01:14  [ТС] 33
Цитата Сообщение от northener Посмотреть сообщение
2. После моего изменения твоего кода у меня ошибки при нажатии кнопки "Обновить" пропали.
я твой код записал так

Delphi
1
2
3
4
5
6
7
8
9
10
11
function Erlang(L:real; k: integer):real;
  var
   j, N: integer;
   x,s: real;
 begin
     randomize;
     s:= 0;
  for j:= 1 to k do
  N:=random(k);
    if N <> 0 then s:=s+ln(N);
  end;
при нажатии на кнопку обновить почему то у меня вылетает ошибка в этом юните unit frmProizISUnit;

вот в этой процедуре

Delphi
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
procedure funcRaspr();   // формирование массива  функции распределения
     var
          i,j,k,n:integer;
        tekZn,intN,intK: real;
         KolInt: integer;              
        mo,disp,maxID,minID,LO,KO: real;
 begin
   if RedTxt then     // если masID редактировался
    begin
     for I := 1 to szmID-1   do
            begin
       masID[i]:= StrToFloat(FrmProizvIS.StrGridID.Cells[i,1]);  //восстановление отредактированного masID
            end;
        RedTxt:=false;
    end;
     KolInt:=StrToInt(FrmProizvIS.EditKolInt.Text);
        ProcUnit.minT(masID,szmID,minID);
        ProcUnit.maxT(masID,szmID,maxID);
         TintFr:= round((maxID-minID)/KolInt)+1;
         FrmProizvIS.EditTint.Text:=IntToStr(TintFr);
      szmFR:=KolInt;
         SetLength(masFR,szmFR);
      for i := 0 to szmFR-1  do
        begin
             intN:=(i)*TintFr;
            intK:=(i+1)*TintFr;
           k:=0;
         for j := 0 to szmID-1  do
            begin
            tekZn:=  masID[j];
          if (intN < tekZn) And (tekZn <= intK) then
               k:=k+1;
            end;
         masFR[i]:= k;
        end;
       n:= FrmProizvIS.StrGridFR.ColCount;
FrmProizvIS.LabelRI.Caption:= 'Распределение по интервалам Tint= '+IntToStr(TintFr)+' сек';
         for I := 0 to n-1  do
           begin
             FrmProizvIS.StrGridFR.Cells[i+1,0]:=IntToStr(i);
             FrmProizvIS.StrGridFR.Cells[i+1,1]:= FloatToStr(masFR[i]);
           end;
       ProcUnit.StsMasID(masID,szmID,mo,disp);
       FrmProizvIS.EditMo.Text:=FloatToStr(mo);
       FrmProizvIS.EditDisp.Text:=FloatToStr(disp);
     Lo:= mo/disp; // вот тут ошибка при нажатии на F8
     Ko:= Lo*mo;
       FrmProizvIS.EditLO.Text:=FloatToStr(Lo);
       FrmProizvIS.EditKO.Text:=FloatToStr(Ko); // ссылается сюда, при наведении каретки на Ko пишет Ko=0
 end;
Добавлено через 4 минуты
попробую сделать такую же проверку)
0
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,251
07.04.2017, 01:15 34
Цитата Сообщение от wolf777 Посмотреть сообщение
я твой код записал так
Кидай ещё раз архив с проектом.
0
1 / 1 / 2
Регистрация: 13.03.2012
Сообщений: 382
07.04.2017, 01:24  [ТС] 35
проект.rar
0
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,251
07.04.2017, 01:51 36
О как всё ужасно! У вас воображения не хватает, чтобы придумать уникальные имена!
Теперь у вас проблема с переменной disp, которая описана в тх мест.
На сегодня я уже пас.
1
1 / 1 / 2
Регистрация: 13.03.2012
Сообщений: 382
07.04.2017, 02:07  [ТС] 37
Цитата Сообщение от northener Посмотреть сообщение
О как всё ужасно! У вас воображения не хватает, чтобы придумать уникальные имена!
придумал как мог) спасибо за то что помогли)))
0
Matan!
07.04.2017, 08:27     Ошибка “Invalid floating point operation”
  #38

Не по теме:

Цитата Сообщение от wolf777 Посмотреть сообщение
придумал как мог
northener, он старался:) Я уже в полночь чушь нести начал ..:pardon:

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.04.2017, 08:27

Ошибка: Invalid floating point operation
Пишу программу, в будущем будет строить трехмерные модели, ограничиваюсь своими костылями,...

Ошибка: Invalid floating point operation
Требуется решить данный пример. Вылазит ошибка &quot;Invalid floating point operation&quot;. Не могу...

Ошибка: Invalid floating point operation
Выводит ошибку invalid floating point operation если ставлю n = 4, а если n = 5 то ''' is not a...

Ошибка invalid floating point operation
Помогите исправить ошибку invalid floating point operation unit Unit1; interface uses ...


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

Или воспользуйтесь поиском по форуму:
38
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru