Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2019, 13:01   #1
Marta_Marta
 
Регистрация: 20.10.2019
Сообщений: 6
Вопрос отрицательный кубический корень в Pascal

Please, help!

Можно ли вычислить отрицательный кубический корень ?
Можно ли x,y,z привести к типу Real?


Код:
Program Pascal_1;

var
  x, y, z: integer;

var
  a, b, c: real;

begin
  write('Введите значение x=');
  readln (x);
  write('Введите значение y=');
  readln (y);
  write('Введите значение z=');
  readln (z);
  if ((z<=0) and ((x+y)mod 2=1)) or ((z=0) and ((x+y)<0)) or (x<1) then begin
  ///при ((z<=0) and ((x+y)mod 2=1)) получается комплексное число
  ///при (z=0) and ((x+y)<0)) получается деление на ноль, т.к. 0^-n=n/0
  ///при (x<1) паскаль выдает ошибку, не вычисляя корень из третьей степени из отрицательного числа, хотя он и существует
  writeln('Введены некорректные данные');
  end
  
  else begin
  b:=Power(z,(x+y)/2);
  c:=Power((x-1)/(abs(y)+1), 1/3);
  a:=(b-c);
  writeln('значение фунции =', a);
  
end;
end.

Последний раз редактировалось Аватар; 21.10.2019 в 13:07.
Marta_Marta вне форума Ответить с цитированием
Старый 21.10.2019, 13:11   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
if аргумент>0 then результат:=Power(аргумент, 1/3)
else if аргумент<0 then результат:=-Power(abs(аргумент), 1/3)
else  результат:=0;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.10.2019, 13:23   #3
Marta_Marta
 
Регистрация: 20.10.2019
Сообщений: 6
По умолчанию

исправила так:

Код:
Program Pascal_1;

var
  x, y, z: integer;

var
  a, b, c: real;

begin
  write('Введите значение x=');
  readln (x);
  write('Введите значение y=');
  readln (y);
  write('Введите значение z=');
  readln (z);
  if x>0 then c:=Power((x-1)/(abs(y)+1), 1/3)
  else if x<0 then c:=-Power((x-1)/(abs(y)+1), 1/3);
  
  b:=Power(z,(x+y)/2);
  c:=Power((x-1)/(abs(y)+1), 1/3);
  a:=(b-c);
  writeln('значение фунции =', a);

end.
но все равно получается что a=Nan


______________________
Используйте тег [CODE] (кнопка [CODE] в форме сообщения) при вставке кода на форум. Подробнее в FAQ

Последний раз редактировалось Serge_Bliznykov; 21.10.2019 в 13:32.
Marta_Marta вне форума Ответить с цитированием
Старый 21.10.2019, 13:25   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

Ну так у вас x-1, а не просто x и ниже не исправили.
p51x вне форума Ответить с цитированием
Старый 21.10.2019, 13:32   #5
Marta_Marta
 
Регистрация: 20.10.2019
Сообщений: 6
По умолчанию

не понимаю..
Marta_Marta вне форума Ответить с цитированием
Старый 21.10.2019, 13:35   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Marta_Marta Посмотреть сообщение
Код:
if x>0 then c:=Power((x-1)/(abs(y)+1), 1/3)
  else if x<0 then c:=-Power((x-1)/(abs(y)+1), 1/3);
  
  b:=Power(z,(x+y)/2);
  c:=Power((x-1)/(abs(y)+1), 1/3);
не смущает, что то, что Вы вычислили значение корня, Вы потом не используете?!!

напишите так:
Код:
  if ((x-1)/(abs(y)+1))>0 then c:=Power((x-1)/(abs(y)+1), 1/3)
  else  c:=-Power(abs((x-1)/(abs(y)+1)), 1/3);
  
  b:=Power(z,(x+y)/2);
  a:=(b-c);
  writeln('значение функции =', a);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.10.2019, 13:36   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

Первое число у Power должно быть положительно.
Код:
if x>0 then c:=Power((x-1)/(abs(y)+1), 1/3)
Понимаете, что знак зависит не от x, а от x-1?

Код:
b:=Power(z,(x+y)/2);
c:=Power((x-1)/(abs(y)+1), 1/3);
Тут вы ничего не поменяли.

Так понятнее?
p51x вне форума Ответить с цитированием
Старый 21.10.2019, 13:41   #8
Marta_Marta
 
Регистрация: 20.10.2019
Сообщений: 6
По умолчанию

Благодарю вас!
Marta_Marta вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кубический корень. Pascal Dellc Помощь студентам 15 28.03.2012 19:40
корень кубический Небесный Общие вопросы Delphi 6 30.05.2010 12:50
кубический корень числа UnrealSP Помощь студентам 0 02.11.2009 18:04
Кубический корень от отрицательного числа Vito89 Помощь студентам 9 29.09.2009 14:40