Дано Х и N. Составить программу для Х в степени N ** Паскале.

0 голосов
52 просмотров

Дано Х и N. Составить программу для Х в степени N на Паскале.


Информатика (17 баллов) | 52 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

О типах x и n неизвестно ничего, но по сложившейся традиции резонно предположить, что n - целое, x - вещественное. Представленная программа написана именно в таком понимании типов переменных.

var
  i,n:integer;
  x,p:double;
begin
  Write('Введите основание (x) и показатель степени (n): ');
  Read(x,n);
  if x=0 then p:=0
  else begin
    p:=1;
    for i:=1 to Abs(n) do p:=p*x;
    if n<0 then p:=1/p<br>  end;
  Writeln(x,'^',n,'=',p)
end.

Тестовые решения:

Введите основание (x) и показатель степени (n): 2 30
2^30=1073741824

Введите основание (x) и показатель степени (n): -3.35 9
-3.35^9=-53137.7624927636

Введите основание (x) и показатель степени (n): 18.3 -4
18.3^-4=8.9165251950717E-06

(142k баллов)
0

Вы на pascalABC.net пишете, там вроде не должно быть проблем с длинной арифметикой? Или я ошибаюсь?

0

И еще - x^n=exp(n * ln(x)) лишь при положительных x.

0

Ну конечно, отрицательные в дробную степень не возвести

0

Я пишу на .net лишь в силу наличия именно этой версии интерпретатора, но при этом по возможности стараюсь не использовать особенностей именно этой версии - её функционала и отличий от турбопаскалей. Уж хотя бы в силу того, что в школе может быть иная версия и учитель, принимая задание, сразу поймет, что оно сделано "на стороне".

0

Не в дробную, просто в отрицательную степень. Для отрицательного х надо брать x^n = exp((-n)*ln(-x))

0

Глупость написал)))))

0

Дробная степень отрицательного числа не определена.

0

Я про то же, а случай отрицательного в отрицательную степень рассмотрен в программе

0

Для целочисленного основания операция определена, поскольку сводится к последовательности умножений.

0

Ведь мы можем вычислить (-2.5)^(-2) как 1/(-2.5)^2=1/6.25

0 голосов

Var x, n, res, i: integer;
begin
res:=1;
readln(x);
readln(n);
for i:= 1 to n do
res:=res*x;
writeln(x, '^', n, ' = ', res);
end.

(4.7k баллов)
0

Если все переменные типа integer, пользователь такой программы скоро познакомится с нехорошим эффектом переполнения при работе с целыми числами, реакция на которое в Паскале по умолчанию выключена... Т.е. программа просто начинает молча врать...