|
#1
|
|||
|
|||
какая-то ошибка
Тестил функции.Всё вроде нормально.Всё запускается
Но при нажатии на 'батон' выдает: 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
|
||||
|
||||
Точно не знаю, но думаю проблема в ф-ции sqrt - корень с отрицательного числа и тп
|
#3
|
||||
|
||||
Что за переменная х, какого типа?
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#4
|
|||
|
|||
Цитата:
По поводу sqrt - может быть вы имели ввиду sqr? sqrt - алгебраический корень, sqr - квадрат выражения. Если так, то в этом скорее всего и ошибка p.s. Вообще, на будущее - полезно говорить, в какой строке возникла ошибка, проще найти причину =) |
#5
|
||||
|
||||
ТС лень заключить код в тег [code], из-за этого плохо понятно, что и куда.
Функция integral похоже вообще ничего не возвращает. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#6
|
|||
|
|||
Цитата:
|
#7
|
|||
|
|||
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
|
||||
|
||||
Вставил твою процедуру - работает без ошибки, правда ф-ция integral возвращает 0. Значит, дело, как минимум, не в этих функциях.
Еще насчет реализации - где инициализация переменной x, которая передается как параметр в функцию fk1? Сначала считает значение fk1, а потом уже в теле ф-ции integral и происходит инициализация x, которая является параметром для fk1 и тд и тп... Код заведомо неверный. |
Этот пользователь сказал Спасибо YVitaliy за это полезное сообщение: | ||
Vlad111 (23.02.2012)
|
#9
|
|||
|
|||
Цитата:
Огромное спасибо.Действительно ошибка заключалась в переменной х.Буду думать как решить проблему |