Программа с постусловием не правильно считает результат - Pascal

Узнай цену своей работы

Формулировка задачи:

Добрый день! Согласно задания: Разработать алгоритм и программу, имеющих структуру цикла с постусловием и осуществляющих табулирование заданной функции при изменении аргумента x от начального значения x0 с постоянным шагом hx , т.е. x = x0 (hx) xn. Дана сложная функция f(x): f(x)= 2sin^2(Pi/4 – x/2), если - Pi/2<=x<= - Pi/4 (1-cos2x)/sin2x, если - Pi/4<x< - Pi/8 x/(2+cosx), если - Pi/8<=x<= 0 При других значениях x функция f(x) не определена. написал программу. Но почему-то при значениях x0=-1.5, шаге hx=0.5 и конечном значении xn=0 программа считает постоянно по первой формуле. Подскажите пожалуйста что не так. Огромное спасибо.
Листинг программы
  1. {************************************************}
  2. {Программа: Tab, лаб.раб. 5, вар.15 }
  3. {Цель:табулирование функции y=f(x) с помощью }
  4. { оператора цикла с постусловием. }
  5. {Описание параметров и переменных: }
  6. {x - аргумент функции; }
  7. {x0,xn - начальное и конечное значения аргумента;}
  8. {hx - шаг изменения аргумента; }
  9. {y - значение функции. }
  10. {Требуемые подпрограммы: нет. }
  11. {Программист: ********** }
  12. {Дата написания: 07 иая 2016 г. }
  13. {************************************************}
  14. Program Tab;
  15. Var
  16. hx,x,x0,xn,y:Real;
  17. Begin {Tab}
  18. {Ввод и эхо-печать исходных данных}
  19. Writeln('ВНИМАНИЕ! При x<-Pi/2(-1.5707) и x>0 функция f(x) не определена');
  20. Write('x0=');
  21. Read (x0);
  22. Write('hx=');
  23. Read (hx);
  24. Write('xn=');
  25. Read (xn);
  26. Writeln('X0=',x0,' HX=',hx,' XN=',xn);
  27. {Табулирование функции}
  28. x:=x0;
  29. repeat {начало цикла}
  30. if(x<-Pi/2) or (x>0) then
  31. Writeln('При x=',x:6:4,' функция f(x) не определена')
  32. else
  33. begin
  34. if (x>=-Pi/2) or (x<=-Pi/4) then y:=2*sqr(sin(Pi/4-x/2))
  35. else if (x>-Pi/4) or (x<-Pi/8) then y:=(1-cos(2*x))/sin(2*x)
  36. else if (x>=-Pi/8) or (x<=0) then y:=x/(2+cos(x));
  37. Writeln('X=',x,' Y=',y);{эхо-печать}
  38. end;
  39. x:=x+hx
  40. until x>xn+hx/2 {конец цикла}
  41. End.{Tab}

Решение задачи: «Программа с постусловием не правильно считает результат»

textual
Листинг программы
  1. if (x>=-Pi/2) and (x<=-Pi/4) then

Объяснение кода листинга программы

  1. Условие проверки диапазона значений переменной x:
    • Переменная x должна быть больше либо равна -Pi/2 и одновременно меньше либо равна -Pi/4.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы