Разработка программ с ветвлениями. Разработка программы для расчета значения кусочно-разрывной функции, страница 2

double x,y;                                                                  

clrscr();                                                                    

cout <<"введите х ";  cin  >> x;                                             

if ((-4<=x)&&(x<-1))   y=-(x/3)+3+2/3;                                       

if ((-1<=x)&&(x<0))    y=-4*x;                                                

if ((0<=x)&&(x<1))     y=3*x;                                                 

if ((1<=x)&&(x<4))     y=3;                                                   

if ((4<=x)&&(x<6))     y=-1.5*x+9;                                            

if (6<=x)            y=0;                                                     

cout<<endl<<"y= "<<y<<endl;                                                   

getch();                                                                      

}                                                                             

4.Описание программы:

  1. Подключаем заголовочные файлы: conio.h (для функций clrscr(),getch () ), iostream.h (для ввода/вывода)

2.Определяем тип переменных. В данном случае переменные будут типа double.

3. Очищаем экран перед запуском программы. Clrscr();

4. Запрашиваем х.

5. Проверяем введенное значение х на принадлежность к заданным участкам функции.

6.Выводим получившееся значение у.

7. Для того чтобы  программа закончила работу до того как пользователь нажмет на какую либо клавишу используем getch();

5.Результаты работы программы:

Пример №1

ввод:

x=3

вывод:

y=3

Пример №2

ввод:

x=2

вывод:

y=3

Пример №3

ввод:

x=0

вывод:

y=0

1.  Разработать программу для вычисления корней кубического уравнения.

2.  Блок-схема.

  1.  Вычислить

                  

2). Если  p = 0, то вычислить  и перейти к п. 5.

3) Если , то нужно вычислить           (знак r совпадает со знаком q);

4). Если , то нужно вычислить D     

Ветвь 2

Ветвь 3

Ветвь 4

Все корни вещественные

Один корень вещественный, а два - комплексные

p<0

;

5). Вычислить корни

- если все корни вещественные, то                                      i = 1, 2, 3.

- если корни комплексные, то                  

                 где .

  1. Текст программы.

#include <conio.h>

#include <iostream.h>

#include <math.h>

void main()

{

double a, b, c, d, p, q, y1, y2, y3, r, z, D, f, U, V, x1, x2, x3, z2, z3, w;

int znak, key;

clrscr ();

cout<<"          ax^3+bx^2+cx+d=0";

cout<<endl;

cout<<"a= "; cin>>a;

cout<<"b= "; cin>>b;

cout<<"c= "; cin>>c;

cout<<"d= "; cin>>d;

p=(3*a*c-b*b)/(3*a*a)/3;

q=(2*pow(b,3)/(27*pow(a,3))-b*c/(3*a*a)+d/a)/2;

if (p==0) { y1=y2=y3=pow(-2*q,1.0/3);

key=0;    }

else { if (q<0) znak=-1;

if (q>0) znak=1;

r=znak*q/fabs(q)*sqrt(fabs(p));

z=q/(pow(r,3));

if (p<0) {D=pow(q,2)+pow(p,3);

if (D<=0) {f=acos(z);

y1=-2*r*cos(f/3);

y2=2*r*cos((M_PI/3)-(f/3));

y3=2*r*cos((M_PI/3)+(f/3));

key=0;

}

else  {f=log(z+sqrt(pow(z,2)-1));

y1=-2*r*cosh(f/3);

U=r*cosh(f/3);

V=sqrt(3)*r*sinh(f/3);

key=1;

}}

if (p>0) {f=log(z+sqrt(pow(z,2)+1));

y1=-2*r*sinh(f/3);

U=r*sinh(f/3);

V=sqrt(3)*r*cosh(f/3);

key=1;

}

}

w=b/(3*a);

x1=y1-w;

if (key==0) {

x2=y2-w;

x3=y3-w;}

else {

x2=U-w;

x3=V;}

cout<<"key= "<<key; cout<<"    ";       cout<<"x1= "<<x1; cout<

getch();

}

Вывод:

В данной лабораторной работе мы познакомились с операторами ветвления if-else и if.