Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2008, 23:04   #11
Pitbull
детский тренер
Форумчанин
 
Аватар для Pitbull
 
Регистрация: 08.06.2007
Сообщений: 532
По умолчанию

Единственное, что ві не учли - єто переполнение Вот Вам пример:
Код:
function Power(X, N : real) : extended; var

t : longint;
r : real;
isInteger : boolean;
begin

//если степень ноль, то результат 1
if N = 0 then begin
result := 1.0;
exit;
end;

//если основание числа 1, то единица в любой степени - единица
if X = 1.0 then begin
result := 1.0;
exit;
end;

//если основание ноль, то 
if X = 0.0 then begin
// если степень больше 0, то результат ф-и ноль иначе - безконечность
if N > 0.0 then
begin
result := 0.0;
exit;
end
else
    ShowMessage('Результат - бесконечность');
end;

//если основание больше нуля
if (X > 0) then
try
result := exp(N * ln(X));
exit;
except
    ShowMessage('Результат - переполнение или потеря значимости');
end;


//если X - отрицательный, то мы все еще можем вычислить результат, если n целое. }
{получить целую часть n ,проверяем четности n }


try
t := trunc(n);
if (n - t) = 0 then
isInteger := true
else
isInteger := False;
except
{ Лишний бит может вызвать переполнение или потерю значимости }
r := int(n);
if (n - r) = 0 then
begin
isInteger := true;
if frac(r/2) = 0.5 then
t := 1
else
t := 2;
end
else
isInteger := False;
end;


if isInteger then
begin
{n целое}
if odd(t) then
{n нечетное}
try
result := -exp(N * ln(-X));
exit;
except
    ShowMessage('Результат - переполнение или потеря значимости');
end
else
{n четное}
try
result := exp(N * ln(-X));
exit;
except
    ShowMessage('Результат - переполнение или потеря значимости');
end;
end
else
    ShowMessage('Результат невычисляем');

end;
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp

Последний раз редактировалось Alex21; 11.01.2008 в 11:49.
Pitbull вне форума Ответить с цитированием
Старый 10.01.2008, 23:16   #12
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Докторская диссертация на тему " Неужели 2х2=4?".
puporev вне форума Ответить с цитированием
Старый 12.01.2008, 08:21   #13
Pitbull
детский тренер
Форумчанин
 
Аватар для Pitbull
 
Регистрация: 08.06.2007
Сообщений: 532
По умолчанию

Цитата:
Сообщение от puporev Посмотреть сообщение
Докторская диссертация на тему " Неужели 2х2=4?".
ну если решать, то решать до конца! перебрать все варианті решений!
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp
Pitbull вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в Label записать число в степени? XilDen Общие вопросы Delphi 7 03.07.2009 21:03
Как вывести все целые степени числа? riorio07 Паскаль, Turbo Pascal, PascalABC.NET 1 20.05.2008 11:47
Найти и вывести все слова,у котоpых число гласных букв пpевышает число согласных. Briz Помощь студентам 2 11.05.2008 00:56
Ввести число N и определить делится ли оно без остатка на число M (VBA) Ivanich Microsoft Office Excel 7 24.04.2008 19:43
Число N, заменить одну из его цифр, чтобы получилось число, max близкое к некоторой степени двойки urgu_st Помощь студентам 13 23.10.2007 09:14