Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.02.2012, 21:36
Vlad111 Vlad111 вне форума
Прохожий
 
Регистрация: 21.02.2012
Сообщения: 3
Репутация: 10
По умолчанию какая-то ошибка

Тестил функции.Всё вроде нормально.Всё запускается
Но при нажатии на 'батон' выдает:

Project Project1.exe raised exception class EInvalidOp with message 'Invalid floating point operation'. Process stopped. Use Step or Run to continue

Не могу дорубиться-что он от меня хочет???
Вот код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
s,h,x,CYM:real;
function integral(f,a,b:real;n:integer):real;
var
s1,s2:real;
i:integer;
begin
h:=(b-a)/n;
x:=a;
s1:=f;
x:=b;
s2:=f;
x:=a+h;
s:=(s1+s2)/2;
for i:=1 to n-1 do
begin
s:=s+f;
x:=x+h;
end;
s:=h*s;
end;
function fk1(z:real):real;
begin
Result:=z*z*sqrt(1-z*z)+z*z*sqrt(1-z*z);
end;

begin
CYM:=integral(fk1(x),0,1,80);

Edit1.Text:=Floattostr(CYM);
end;

end.

lmikle: пользуемся тегами

Последний раз редактировалось lmikle, 22.02.2012 в 03:55.
Ответить с цитированием
  #2  
Старый 21.02.2012, 21:47
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Точно не знаю, но думаю проблема в ф-ции sqrt - корень с отрицательного числа и тп
Ответить с цитированием
  #3  
Старый 21.02.2012, 21:48
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Что за переменная х, какого типа?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #4  
Старый 21.02.2012, 21:54
nixel nixel вне форума
Начинающий
 
Регистрация: 12.12.2011
Адрес: Москва
Сообщения: 150
Версия Delphi: XE2-U4
Репутация: 131
По умолчанию

Цитата:
Сообщение от angvelem
Что за переменная х, какого типа?
x:real - 3 строка кода.

По поводу sqrt - может быть вы имели ввиду sqr? sqrt - алгебраический корень, sqr - квадрат выражения. Если так, то в этом скорее всего и ошибка
p.s. Вообще, на будущее - полезно говорить, в какой строке возникла ошибка, проще найти причину =)
Ответить с цитированием
  #5  
Старый 21.02.2012, 22:01
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

ТС лень заключить код в тег [code], из-за этого плохо понятно, что и куда.
Функция integral похоже вообще ничего не возвращает.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #6  
Старый 21.02.2012, 22:08
nixel nixel вне форума
Начинающий
 
Регистрация: 12.12.2011
Адрес: Москва
Сообщения: 150
Версия Delphi: XE2-U4
Репутация: 131
По умолчанию

Цитата:
Сообщение от angvelem
Функция integral похоже вообще ничего не возвращает.
хм, а ведь правда
Ответить с цитированием
  #7  
Старый 23.02.2012, 14:32
Vlad111 Vlad111 вне форума
Прохожий
 
Регистрация: 21.02.2012
Сообщения: 3
Репутация: 10
По умолчанию

sqrt-корень,так что все верно.
Отрицательного числа под корнем нет
Откуда я знаю в какой строке ошибка?Я же говорю-программа компилируется,а при нажатии на Button1 отказывается считать и вы дает

Project Project1.exe raised exception class EInvalidOp with message 'Invalid floating point operation'. Process stopped. Use Step or Run to continue

тегом всмыле как пользоваться?Просто весь код заключить в тег [code]?
Прописал integral:=s;в функции integral таже ошибка.Люди,помогите!!!
Ответить с цитированием
  #8  
Старый 23.02.2012, 15:40
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Вставил твою процедуру - работает без ошибки, правда ф-ция integral возвращает 0. Значит, дело, как минимум, не в этих функциях.
Еще насчет реализации - где инициализация переменной x, которая передается как параметр в функцию fk1? Сначала считает значение fk1, а потом уже в теле ф-ции integral и происходит инициализация x, которая является параметром для fk1 и тд и тп... Код заведомо неверный.
Ответить с цитированием
Этот пользователь сказал Спасибо YVitaliy за это полезное сообщение:
Vlad111 (23.02.2012)
  #9  
Старый 23.02.2012, 20:01
Vlad111 Vlad111 вне форума
Прохожий
 
Регистрация: 21.02.2012
Сообщения: 3
Репутация: 10
По умолчанию

Цитата:
Сообщение от YVitaliy
насчет реализации - где инициализация переменной x, которая передается как параметр в функцию fk1? Сначала считает значение fk1, а потом уже в теле ф-ции integral и происходит инициализация x, которая является параметром для fk1 и тд и тп... Код заведомо неверный.

Огромное спасибо.Действительно ошибка заключалась в переменной х.Буду думать как решить проблему
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:46.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter