Вопрос № 39075: Здравствуйте!
Можете привести пример программы на Pascal для просмотра различных изображений?
Спасибо!...Вопрос № 39125: Здравствуйте, уважаемые эксперты!
Как в паскале вычислить x в степени i? И как корень i'той степени числа x?
Спасибо....
Вопрос № 39.075
Здравствуйте!
Можете привести пример программы на Pascal для просмотра различных изображений?
Спасибо!
Отправлен: 31.03.2006, 19:51
Вопрос задал: [TiER] (статус: 1-ый класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Артём Шегеда
Здравствуйте, [TiER]!
Вопрос этот меня задел, поэтому решил показать возможности БорландПаскаля...
Два часа убил на изучание структур и написание программы. Возможности, конечно, реализованы не все, но довести её до ума - Ваша забота ;)
Приложение:
Ответ отправил: Артём Шегеда (статус: 4-ый класс)
Ответ отправлен: 31.03.2006, 22:30
Вопрос № 39.125
Здравствуйте, уважаемые эксперты!
Как в паскале вычислить x в степени i? И как корень i'той степени числа x?
Спасибо.
Отвечает: Cheater76
Здравствуйте, Москвин Роман Валерьевич!
В Паскале нет функции возведения числа в произвольную степень, но зато есть функции для вычисления экспоненты и натурального логарифма (exp() и ln() соответственно).
Пусть надо вычислить X^V. Сделаем такую замену: X = e^ln(X). Тогда
X^V = e^(V* ln(X)).
Оформим это выражение в виде функции на Паскале:
Function pow(x, v : real) : real;
Begin
pow := exp(v*ln(x));
End;
Эта функция будет правильно работать только при положительных значениях X (при X=0 логарифм равен минус бесконечности).
Для X < 0 при дробном V решение является комплексным.
В вещественных числах можно найти решение для целых значений показателя степени. Используем свойство: Для отрицательного X и целого N выполняются следующие равенства:
XN = |X|N, если N - четное;
XN = -(|X|N), если N - нечетное.
Кроме того, следует отдельно рассмотреть случаи, когда показатель степени или основание равны нулю:
* X0 = 1;
* 0V = 0 при V>0;
* 0V = бесконечность при V<0;
Заменим бесконечность нулем. При вычислениях надо будет избегать сочетания X=0,V<0.
Получилась такая функция:
Function pow1(x, v : real) : real;
Begin
if (v = 0.0) then
pow1 := 1
else
if (x = 0.0) then
pow1 := 0
else
if (x > 0.0) then
pow1 := exp(v*ln(x))
else
if (odd(trunc(v))) then
pow1 := -exp(int(v)*ln(-x))
else
pow1 := exp(int(v)*ln(-x));
End;
Заметим еще раз, что эта функция возвращает неверный результат при отрицательных V:
* когда X=0;
* когда V - дробное.
Ответ отправил: Cheater76 (статус: 5-ый класс)
Ответ отправлен: 01.04.2006, 14:13 Оценка за ответ: 5
Отвечает: sir henry
Здравствуйте, Москвин Роман Валерьевич!
Первый способ. Для этого надо вспомнить курс школьной математики и определить, что такое степень числа. Степень числа - это число умноженое на самго себя столько раз, сколько указано в степени.
Function Power(const Base, Exponent: Integer): Integer;
Var
i:=integer;
Begin
Power:=1;
If Exponent=0 Then
Power:=1
Else If Base=0 Then
Power:=0;
Else
For i:=0 To Exponent Do
Power:=Power*Base;
End;
Второй способ более универсальный, т.к. позволяет вычислять корни n-ой степени.
Function Power(const Base, Exponent: Double): Double;
Begin
Power:=Exp(Exponent * Ln(Base));
End;
Для вычисления корней с помощью этой функции, опять же надо вспомнить, что корень числа, например, 6 степени - это число в степени 1//6.
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 01.04.2006, 18:55 Оценка за ответ: 5 Комментарий оценки: хороший ответ
Отвечает: Tony
Здравствуйте, Москвин Роман Валерьевич!
{Степень числа n}
fucntion grad (n, g : integer) : longint;
{n - число, g - степень}
var
i : integer;
res : longint;
begin
res := 1;
for i := 1 to g do
res := g*n;
grad := res;
end;
--------- Be true!
Ответ отправил: Tony (статус: 1-ый класс)
Ответ отправлен: 01.04.2006, 22:01