Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Возвести число в степень в Delphi


Автор: Drovosek 9.4.2006, 12:52
Напишите пжлст, как возвести число в степень?

for i:=1 to k do
begin
{???}
end;

Заранее благодарен.

Автор: MIX55 9.4.2006, 13:17
возвести 2 в нужную степень можно так:

Код

a := 1; 
for i := 1 to 20 do 
  a := a * 2; 


можно еще http://offline.burik.ru/delphi/dw/int_power.html посмотреть
Так же есть функцияи (Power, IntPower или LdExp) модуль Math.
Можно сдвигать двоичные порядки на N порядков.
Код

var 
 Res, Exponent: integer; 
 begin 
 Exponent := 10; 
 Res := 10 shl Exponent; 
 Form1.Caption := IntToStr(Res) + #32; 
 Res := Res shr Exponent; 
 Form1.Caption := Form1.Caption + IntToStr(Res); 

Автор: koder 9.4.2006, 13:21
Код

...
k := number; //число, которое будем возводить в степень

if stepen = 0 then k := 1;

for i := 1 to abs(stepen) do 
  k := k * k;
if stepen < 0 then
 k := 1 / k;
...

Автор: Slaad 9.4.2006, 13:46
Хмм Господин Koder , а что если степень это дробь? smile

Автор: darkart 9.4.2006, 14:09
Код

var
  x,y,res:real;
....
res:=exp(y*ln(x));
....

Автор: koder 9.4.2006, 14:50
Цитата(Slaad @ 9.4.2006, 13:46)
Хмм Господин Koder , а что если степень это дробь?  smile

Так пример был приведен для натуральных чисел, который смахивает на пост аффтора.

Автор: darkart 9.4.2006, 18:22
Цитата(koder @ 9.4.2006, 15:50 Найти цитируемый пост)
Так пример был приведен для натуральных чисел, который смахивает на пост аффтора.

Все равно не верно, цикл должен работать на один раз меньше.

Автор: koder 9.4.2006, 18:33
Цитата(darkart @ 9.4.2006, 18:22)
Цитата(koder @  9.4.2006,  15:50 Найти цитируемый пост)
Так пример был приведен для натуральных чисел, который смахивает на пост аффтора.

Все равно не верно, цикл должен работать на один раз меньше.

Код

...    
k := number; //число, которое будем возводить в степень    
if stepen = 0 then k := 1;    
for i := 1 to Pred(abs(stepen)) do    
  k := k * k;    
if stepen < 0 then    
 k := 1 / k;    
...

Спасибо, что нашел ошибку в моем коде!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)