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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2010, 21:52   #1
manick
Пользователь
 
Регистрация: 14.04.2010
Сообщений: 17
Печаль Возведение в степень(делфи)

Как написать функцию возведения любого числа в любую степень? ( например 0.6 ^2.4 или -4 ^3)

Код:
function step (x:real;n:real):real;
begin
y:=exp(ln(x)*n);
step:=y;

end;
по этой функции не работает.
подскажите пожалуйста.

Последний раз редактировалось Stilet; 15.04.2010 в 08:39.
manick вне форума Ответить с цитированием
Старый 14.04.2010, 21:56   #2
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

Код:
// возводим в степень step любое число value
function stepen(value: integer; step: Byte): Integer;
var
  i, res: Integer;
begin
  if step = 0 then begin // если степень 0, то результат 1
    Result := 1;
  end
  else if step = 1 then begin // если степень 1, то результат само число
    Result := value;
  end
  else begin
    res := value;
    for i := 2 to step do begin // каков размер степени, столько раз и умножаем число
      res := res * value;
    end;
    Result := res; // возвращаем результат
  end;
end;
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 14.04.2010, 22:20   #3
UnChanter
Пользователь
 
Аватар для UnChanter
 
Регистрация: 14.12.2008
Сообщений: 65
По умолчанию

Код:
uses Math;
...
a = Power(1.6, 2.2);
UnChanter вне форума Ответить с цитированием
Старый 14.04.2010, 22:30   #4
manick
Пользователь
 
Регистрация: 14.04.2010
Сообщений: 17
По умолчанию

Цитата:
Сообщение от RUSt88 Посмотреть сообщение
Код:
// возводим в степень step любое число value
function stepen(value: integer; step: Byte): Integer;
var
  i, res: Integer;
begin
  if step = 0 then begin // если степень 0, то результат 1
    Result := 1;
  end
  else if step = 1 then begin // если степень 1, то результат само число
    Result := value;
  end
  else begin
    res := value;
    for i := 2 to step do begin // каков размер степени, столько раз и умножаем число
      res := res * value;
    end;
    Result := res; // возвращаем результат
  end;
end;
мне нужно получить результат "real" (с плавующей точкой) а твоя функция содержит целочисленные переменные .
manick вне форума Ответить с цитированием
Старый 14.04.2010, 22:33   #5
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

Цитата:
мне нужно получить результат "real"
а в чем проблема я не понял? тебе влом пару слов исправить? или я за тебя должен решить здесь, а ты мне еще замечания будешь делать?

хоть бы спасибо сказал
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 14.04.2010, 22:34   #6
manick
Пользователь
 
Регистрация: 14.04.2010
Сообщений: 17
По умолчанию

Цитата:
Сообщение от UnChanter Посмотреть сообщение
Код:
uses Math;
...
a = Power(1.6, 2.2);
не работает
выдает:
Project calcul.exe raised exception class EConvertError with massege "0.2' is not valid floating point value' process stopped. use step or Run to continue.

я пытался 0.2^3 посчитать.

Цитата:
Сообщение от RUSt88 Посмотреть сообщение
а в чем проблема я не понял? тебе влом пару слов исправить? или я за тебя должен решить здесь, а ты мне еще замечания будешь делать?

хоть бы спасибо сказал
не в "пару слов" проблема. а в том что не считает.

Последний раз редактировалось Stilet; 15.04.2010 в 08:39.
manick вне форума Ответить с цитированием
Старый 14.04.2010, 22:38   #7
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

Цитата:
0.2
если у тя русский язык стоит, используй запятую вместо точки, и наоборот

Цитата:
тебе влом пару слов исправить?
изменить типы на Real ?
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]

Последний раз редактировалось RUSt88; 14.04.2010 в 22:40.
RUSt88 вне форума Ответить с цитированием
Старый 14.04.2010, 22:41   #8
CodeExpert
Заблокирован
 
Регистрация: 30.10.2009
Сообщений: 468
По умолчанию

for i := 2 to step do begin // каков размер степени, столько раз и умножаем число
res := res * value;
end;

улыбнуло как оно должно считать числа с плавающей точкой если ход цикла в единицу(?)
Цитата:
или я за тебя должен решить здесь, а ты мне еще замечания будешь делать?
- умерите пыл свой пожалуйста, мы на форуме а не во дворе на лавочке...
CodeExpert вне форума Ответить с цитированием
Старый 14.04.2010, 22:47   #9
manick
Пользователь
 
Регистрация: 14.04.2010
Сообщений: 17
По умолчанию

Цитата:
Сообщение от RUSt88 Посмотреть сообщение
если у тя русский язык стоит, используй запятую вместо точки, и наоборот



изменить типы на Real ?
помогло =) спасибо=)
manick вне форума Ответить с цитированием
Старый 18.01.2014, 12:58   #10
Khalisi75
Новичок
Джуниор
 
Регистрация: 18.01.2014
Сообщений: 1
По умолчанию

А как написать такую программу, не используя функции?
Khalisi75 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
возведение в степень [CODER] Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 14.04.2014 10:18
возведение в степень ILNARM Паскаль, Turbo Pascal, PascalABC.NET 16 16.10.2009 23:04
возведение в степень Lissisa Помощь студентам 1 21.03.2009 22:34
Возведение в степень Stanislav Общие вопросы Delphi 10 05.12.2007 23:34
Возведение в степень... Sota Общие вопросы C/C++ 7 18.07.2007 17:05