IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Ошибка 205.Как исправить?, Error 205: Floating Point overflow
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Николай

Репутация: -  0  +


Здравствуйте!

Было задание:
- вычислить с = 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)));

Вот наглядный так сказать пример... ;)
Прикрепленное изображение
В чем моя ошибка?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
В чем моя ошибка?
Емкости типа 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 взялось второе слагаемое? В условии его не было.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Николай

Репутация: -  0  +


Цитата(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))) ?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Николай

Репутация: -  0  +


Посидел минут 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.


Тему можно закрыть.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 15.05.2024 10:13
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name