Консультация № 66391
10.12.2006, 19:57
0.00 руб.
0 2 2
Здравствуйте,необходимо вычислить функцию y=(|X|-10) и все это в 57-ой степени.При x < -16.
Я попробовал решить следующим оброзом:

program exm_1;
Uses CRT;
Const a=57;
Var
i:integer;
x,y:real;
Begin
ClrScr;
y:=1;
writeln (‘Введите X‘);
readln(X);
If X<-16 then
For i=1 do a
y:=y*(abs(X))-10);
writeln (‘при X=‘,X:5:2);
write (‘y=‘,y:5:2);
readln
End.

но когда ввожу х=-17 ,то появляется ошибка 205 "переполнение вещественного числа".
Еще один вопрос. Если я хочу ограничить при расчетах 3-им или 5-ым знаком посое десятичной запятой,как это реализовать в паскале.

С уважением,Oleg.

Обсуждение

Неизвестный
11.12.2006, 05:32
общий
это ответ
Здравствуйте, Kulikov_Oleg_Viktorovich!
Попробуйте так (в приложении):
В разработке програм в следующем можете использовать перевод степени на язык программирования. если имеется выражение (х-234) в 157 степени то надо: Экспоненту от степени умножить на натуральный логарифм от показателя степени, т.е. выглядит это так:

exp(157)*ln(x-234)

Приложение:
program exm_1;Uses CRT;Vari:integer;x,y:real;BeginClrScr;y:=1;writeln (‘Введите X‘);readln(X);If X<-16 theny:=exp(57)*ln((abs(X))-10));writeln (‘при X=‘,X:5:2);write (‘y=‘,y:5:2);readlnEnd.
давно
Мастер-Эксперт
425
4118
11.12.2006, 06:37
общий
это ответ
Здравствуйте, Kulikov_Oleg_Viktorovich!
1. Забудьте про вещественный тип REAL. Его придумали в то время, когда математические сопроцессоры были ужасно дороги. Теперь же они сидят в каждом компе.Используйте либо тип SINGLE, если ожидаемое значение не выходит за диапазон 1.5 x 10^–45 .. 3.4 x 10^38, в противном же случае пользуйтесь типом DOUBLE, у него значения лежат в диапазоне 5.0 x 10^–324 .. 1.7 x 10^308 , т.е. степень 57 туда как раз входит. У REAL диапазон ограничен 2.9 x 10^–39 .. 1.7 x 10^38.
2. При расчетах Вы, к сожалению, не сможете ограничится каким либо знаком после запятой, однако Вы это можете сделать при выводе результата:
WriteLn(Число:N:M);
Здесь:
N - это общее количество выводимых знаков,
M - число знаков после запятой.
Таким образом если задать:
a:=1,375E-3;
WriteLn(a:10:5);
то в результате выведется число 0,00137. Впереди дополнится пробелами до 10 знаков. Очень удобно при выводе на экран табличек.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Форма ответа