Top.Mail.Ru
Ответы
Аватар пользователя
9мес
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+3

Паскаль, прошу помогите

Помогите пожалуйста решить, с текстом программы

Дополнен
По дате
По рейтингу
Аватар пользователя
Новичок
9мес

Вы получите сразу ошибку, если будете возводить в отрицательную степень используя логарифмирование.

Y := Exp((n+1) * Ln(x));

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

12345678910
 function Pow(x,y: Real): Real;  
var PowTmp: Real;  
begin  
  if (x < 0) then  PowTmp := (-1) * Exp(y * Ln(Abs(x)))  
  else if (x > 0) then PowTmp := Exp(y * Ln(Abs(x)))  
  else PowTmp := 0;  
  if not Odd(Round(y)) then PowTmp := Abs(PowTmp);  
  if (y = 0) then PowTmp := 1;  
  Pow:=PowTmp;  
end;   


и первая строчка запишется

if x <= 0 then Y := Pow(x, n+1)

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

else if (x > 0) and (x <=3.5) then Y := Ln(Pow(x+b, n))/Ln(10) // для случая, когда n относится к скобке

ну и, наконец,

else if x > 3.5 then Y := Pow(x, n);

Как-то так...

Аватар пользователя
Просветленный
9мес

Если x <= 0 тогда
writeln x^n+1
Если 0<x<=3,5 тогда
writeln lg(x+b)^n
Если x>3,5 тогда
writeln x^n

69ять, ну тривиальщина же, даже математику не надо знать, ЛОГИКА ОДНА.
на Паскаль сам перепиши правильно, чтоб не отупеть совсем