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

0 голосов

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


спросил от (17 баллов) в категории Информатика
2 Ответы
0 голосов
ответил от Архангел (142k баллов)
 
Лучший ответ

О типах 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

оставил комментарий от Отличник (5.2k баллов)

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

оставил комментарий от Архангел (142k баллов)

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

оставил комментарий от Отличник (5.2k баллов)

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

оставил комментарий от Архангел (142k баллов)

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

оставил комментарий от Архангел (142k баллов)

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

оставил комментарий от Архангел (142k баллов)

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

оставил комментарий от Архангел (142k баллов)

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

оставил комментарий от Отличник (5.2k баллов)

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

оставил комментарий от Архангел (142k баллов)

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

оставил комментарий от Архангел (142k баллов)

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

0 голосов
ответил от Одаренный (4.7k баллов)

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.

оставил комментарий от Архангел (142k баллов)

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

...