Доброго времени суток.
Посмотрите реализацию функции возведения в степень (Power) в модуле Math.
function IntPower(X: Extended; I: Integer): Extended;
var Y: Integer;
begin
Y := Abs(I);
Result := 1.0;
while Y > 0 do begin
while not Odd(Y) do
begin
Y := Y shr 1;
X := X * X
end;
Dec(Y);
Result := Result * X
end;
if I < 0 then Result := 1.0 / Result
end;
function Power(Base, Exponent: Extended): Extended;
begin
if Exponent = 0.0 then
Result := 1.0 { n**0 = 1 }
else if (Base = 0.0) and (Exponent > 0.0) then
Result := 0.0 { 0**n = 0, n > 0 }
else if (Frac(Exponent) = 0.0) and (Abs(Exponent) <= MaxInt) then
Result := IntPower(Base, Trunc(Exponent))
else
Result := Exp(Exponent * Ln(Base))
end;
Это для Delphi. Адаптировать gkl Турбо Паскаль очень просто. Достаточно в секцию var ввести Result и последним оператором функции записить такой
Power := Result; для Power и
IntPower := Result; для IntPower
Пользоваться легко. Base - основание, а Exponent - показатель степени.
Write('Введите основание и степень через пробел');
ReadLn(x, n);
WriteLn('Результат = ', Power(x, n));
Удачи!
Другие языки программирования и технологии
Помогите составить прогу в паскале: А в степени N, чтобы высчитывала ответ при вводе числа и её степени.Заранее спасиб
тут делать нечего.. .
вот вы бы мне посчитали EXP(X), где Х-матрица квадратная, разложив экспоненту в ряд...)))
вот вы бы мне посчитали EXP(X), где Х-матрица квадратная, разложив экспоненту в ряд...)))
var a, b,n,i: integer;
begin
writeln('Введите число'); readln(a);
writeln('Введите степень'); readln(n);
b:=1;
for i:=1 to n do b:=b*a;
writeln(a,' в степени ',n,' равно ',b);
end.
Это в том случае, если и основание степени и ее показатель целые.
Можно заменить блок описания переменных так:
var a,b:real; n,i:integer;
В этом случае основание степени, а, следовательно, и результат - любое вещественное число.
Ну, а если еще и показатель степени дробный, то сразу сообразить не могу. Вы бы задавая вопросы не отключали возможность вставки комментариев. Тогда уточнение в вопрос и в ответ можно было бы вставить когда угодно.
begin
writeln('Введите число'); readln(a);
writeln('Введите степень'); readln(n);
b:=1;
for i:=1 to n do b:=b*a;
writeln(a,' в степени ',n,' равно ',b);
end.
Это в том случае, если и основание степени и ее показатель целые.
Можно заменить блок описания переменных так:
var a,b:real; n,i:integer;
В этом случае основание степени, а, следовательно, и результат - любое вещественное число.
Ну, а если еще и показатель степени дробный, то сразу сообразить не могу. Вы бы задавая вопросы не отключали возможность вставки комментариев. Тогда уточнение в вопрос и в ответ можно было бы вставить когда угодно.
Похожие вопросы
- помогите составить прогу в паскале
- люди помогите написать прогу в паскале чтоб она запрашивала число и потом писала простое оно или нет, всю голову сломал
- Помогите составить программу на паскале!
- Помогите написать прогу на паскале
- СРОЧНО ПОМОГИТЕ!!! Напишите прогу на паскале
- Помогите написать прогу на Паскале, экзамен горит, очень нужно..
- Помогите написать прогу на паскале!
- Помогите дописать прогу на паскале
- помогите написать прогу в паскале срочно!!
- помогите написать прогу в паскале:)