Программа с постусловием не правильно считает результат - 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
программа считает постоянно по первой формуле.
Подскажите пожалуйста что не так.
Огромное спасибо.
Листинг программы
- {************************************************}
- {Программа: Tab, лаб.раб. №5, вар.15 }
- {Цель:табулирование функции y=f(x) с помощью }
- { оператора цикла с постусловием. }
- {Описание параметров и переменных: }
- {x - аргумент функции; }
- {x0,xn - начальное и конечное значения аргумента;}
- {hx - шаг изменения аргумента; }
- {y - значение функции. }
- {Требуемые подпрограммы: нет. }
- {Программист: ********** }
- {Дата написания: 07 иая 2016 г. }
- {************************************************}
- Program Tab;
- Var
- hx,x,x0,xn,y:Real;
- Begin {Tab}
- {Ввод и эхо-печать исходных данных}
- Writeln('ВНИМАНИЕ! При x<-Pi/2(-1.5707) и x>0 функция f(x) не определена');
- Write('x0=');
- Read (x0);
- Write('hx=');
- Read (hx);
- Write('xn=');
- Read (xn);
- Writeln('X0=',x0,' HX=',hx,' XN=',xn);
- {Табулирование функции}
- x:=x0;
- repeat {начало цикла}
- if(x<-Pi/2) or (x>0) then
- Writeln('При x=',x:6:4,' функция f(x) не определена')
- else
- begin
- if (x>=-Pi/2) or (x<=-Pi/4) then y:=2*sqr(sin(Pi/4-x/2))
- else if (x>-Pi/4) or (x<-Pi/8) then y:=(1-cos(2*x))/sin(2*x)
- else if (x>=-Pi/8) or (x<=0) then y:=x/(2+cos(x));
- Writeln('X=',x,' Y=',y);{эхо-печать}
- end;
- x:=x+hx
- until x>xn+hx/2 {конец цикла}
- End.{Tab}
Решение задачи: «Программа с постусловием не правильно считает результат»
textual
Листинг программы
- if (x>=-Pi/2) and (x<=-Pi/4) then
Объяснение кода листинга программы
- Условие проверки диапазона значений переменной
x
:- Переменная
x
должна быть больше либо равна-Pi/2
и одновременно меньше либо равна-Pi/4
.
- Переменная
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д