Помощь - Поиск - Пользователи - Календарь
Полная версия: Ошибка 205.Как исправить?
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Ericsson
Здравствуйте!

Было задание:
- вычислить с = arctg2|b2- a2| + 3 √|f-3b| / Cos3x (под корнем только числитель),
если даны:
a = 3.5
x = ln|b-a| + 2*a
f = x*eb
b = 3 + Cosa2

Составил программу -
program OS;
var a,b,x,f,c:real;
begin
writeln ('BBoD a');
readln (a);
b:= 3 + Cos(sqr(a));
x:=ln(abs(a-b)) + 2*a;
f:=x*exp(b) + 2.5*a;
c:=sqr(arctan(abs(sqr(b))) - sqr(a)) + exp(1/3*abs(f-3*b))/exp(3*ln(Cos(x)));
writeln ('c:=');
readln;
end.


Собственно при запуске - после ввода числа "а" (3.5) - пишет Error 205: Floating point overflow и "показывает" строчку с
c:=sqr(arctan(abs(sqr(a))) - sqr(b)) + exp(1/3*abs(f-3*b))/exp(3*ln(Cos(x)));

Вот наглядный так сказать пример... ;)
Нажмите для просмотра прикрепленного файла
В чем моя ошибка?
volvo
Цитата
В чем моя ошибка?
Емкости типа Real не хватает для того, чтобы вместить полученный результат.

Переменная типа Real может принимать значение от 2.9*10-39 до 1.7*1038. При работе вышеприведенной программы получается результат 1.60033850960527*1046. Переходи на сопроцессорные типы double или extended... Любой из них способен вместить результат... Single тоже не хватит.

Добавлено через 9 мин.
P.S. У тебя не совсем корректно записана формула:
Цитата
sqr(arctan(abs(sqr(a))) - sqr(b))
вычислит (arctan(|a2|) - b2)2, а не то что тебе нужно. Еще одно: Откуда при вычислении f взялось второе слагаемое? В условии его не было.
Ericsson
Цитата(volvo @ 15.02.2010 23:14) *

Еще одно: Откуда при вычислении f взялось второе слагаемое? В условии его не было.

Пардон,не дописал ->
f = x*eb + 2.5 * a
Цитата(volvo @ 15.02.2010 23:14) *

P.S. У тебя не совсем корректно записана формула: sqr(arctan(abs(sqr(a))) - sqr(b))
вычислит (arctan(|a2|) - b2)2, а не то что тебе нужно.

Хм.
sqr(arctan(abs(sqr(a))) - abs(sqr(b))) ?
Ericsson
Посидел минут 40 над кодом,но зато отыскал все свои ошибки:
program OS;
var a,b,x,f,c:real;
begin
writeln ('BBoD a');
readln (a);
b:= 3 + Cos(sqr(a));
x:=ln(abs(a-b)) + 2*a;
f:=x*exp(b) + 2.5*a;
c:=sqr(arctan(abs(sqr(b) - sqr(a)))) + exp(1/3*ln(abs(f-3*b)))/exp(3*ln(Cos(x)));
writeln ('c:=',c:6:2);
readln;
end.


Тему можно закрыть.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.