cin>>x2;
cout<<endl;
cout<<"Y2: ";
cin>>y2;
cout<<endl;
cout<<"R1: ";
cin>>R1;
cout<<endl;
cout<<" R2: ";
cin>>R2;
cout<<endl;
cout<<" x: ";
cin>>x;
cout<<endl;
cout<<" y: ";
cin>>y;
cout<<endl;
// определяем окружность
otv=0;
if ((pow(x1-x,2)+pow(y1-y,2))<=pow(R1,2)) (id1=1);
if ((pow(x2-x,2)+pow(y2-y,2))<=pow(R2,2)) (id2=1);
if (id1==1) (otv=1);
if (id2==1) (otv=2);
if (id1==id2&&id2==1) (otv=3);
// Вывод ответа
cout<<"Ответ: ";
if (otv==1) (cout<<"попало в 1 окружность ");
if (otv==2) (cout<<"попало во 2 окружность");
if (otv==3) (cout<<"попало в 1 и 2 окружность");
if (otv==0) (cout<<"Не попало ни в одну окружность");
getch();
}
Проверка:
1)
Введите X1: -1
Введите Y1: 0
Введите X2: 1
Введите Y2: 0
ведите R1: 2
Введите R2: 2
Введите x: 0
Введите y: 0
Ответ: Попало в 1 и 2 окружность
Пояснение: ввели 2 окружности с радиусом 2 и на расстоянии от начала координат 1 и точку в начале координат следовательно точка должна попасть в 1 и 2 окружность
2)
Введите X1: -1
Введите Y1: 0
Введите X2: 100
Введите Y2: 100
Введите R1: 2
Введите R2: 1
Введите x: 0
Введите y: 0
Ответ: Попало в 1 окружность
Пояснение: здесь видно что 2 окружность имеет радиус равный 2 и расположена относительно далеко от начала координат а 1 окружность имеет радиус равный 2 и расположена на расстоянии 1 от насала координат очевидно что точка расположенная в начале координат попадает в окружность.
Вывод:
Программа безошибочно определяет в какие из 2-х любых окружностей на плоскости попадает точка.(Включительно контур)
Задание 8
Разработать программу для вычисления корней кубического уравнения. Формульное описание алгоритма приведено в Приложении 1 и файле Root3_alg_text.doc, а его блок-схема – в Приложении 2 и файле Root3_alg_block.doc. Отладить работу всех ветвей программы с помощью тестовых данных, приведенных в Приложении 3 и файле Root3data.doc.При отладке использовать пошаговое исполнение программы с помощью отладчика (клавиша <F8>).
Код программы:
#include <iostream.h>
#include <conio.h>
#include <math.h>
void main()
{
// Îïèñàíèå ïåðåìåííûõ
double a,b,c,d,p,q,y1,y2,y3,D,r,z,x1,z2,z3,w,v,fi,pi,u,k;
int id;
// Ââîä äàííûõ
clrscr();
cout<<"a = ";
cin>>a;
cout<<endl;
cout<<"b = ";
cin>>b;
cout<<endl;
cout<<"c = ";
cin>>c;
cout<<endl;
cout<<"d = ";
cin>>d;
cout<<endl;
// âû÷èñëÿåì ïðîìåæóòî÷íûå äàííûå
p=(1.0/3)*((3.0*a*c-b*b)/(3.0*a*a));
q=(1.0/2.0)*((2.0*b*b*b)/(27.0*a*a*a)-(b*c)/(3.0*a*a)+d/a);
// Ëîãè÷åñêàÿ ÷àñòü ïðîãðàììû
if (p==0)
{
y3=pow(-2.0*q,1.0/3);
y2=y3;
y1=y3;
k=0;
}
else
{
r = sqrt(sqrt(p*p))*(q/sqrt(q*q));
z = q/(r*r*r);
if (p<0)
{
D=q*q+p*p*p;
if(D<=0)
{
fi=acos(z);
y1=-2.0*r*cos(fi/3.0);
y2=2.0*r*cos(M_PI/3.0-fi/3.0);
y3=2.0*r*cos(M_PI/3.0+fi/3.0);
k=0 ;
}
else
{
fi=log(z+sqrt(z*z-1.0));
y1=(-2.0*r)*(cosh(fi/3.0));
u=r*(cosh(fi/3.0));
v=sqrt(3.0)*r*sinh(fi/3.0);
k=1;
}
}
else
{
fi=log(z+sqrt(z*z+1.0));
y1=-2.0*r*sinh(fi/3.0);
u=r*sinh(fi/3.0);
v=sqrt(3.0)*r*cosh(fi/3.0); k=1;
}
}
w=b/(3.0*a);
x1=y1-w;
if (k==0)
{
z2=y2-w;
z3=y3-w;
cout<<"k="<<k<<endl;
cout<<"Žâ¢¥â: x1="<<x1<<endl;
cout<<" x2="<<z2<<endl;
cout<<" x3="<<z3<<endl;
}
else
{
z2=(u-w)+2.0*v;
z3=(u-w)-3.0*v;
cout<<"k="<<k<<endl;
cout<<"Žâ¢¥â: x1="<<x1<<endl;
cout<<" z2="<<z2<<endl;
cout<<" z3="<<z3<<endl;
}
getch();
}
Проверка:
1)
a = 2.0
b = 3.0
c = 1.5
d = -15.75
k=0
Ответ: x1=1.5
x2=1.5
x3=1.5
2)
a = 1.5
b = -3.0
c = -7.5
d = 9.0
k=0
Ответ: x1=-2
x2=3
x3=1
Вывод: при пошаговом выполнении видно что промежуточные переменные тоже совпадают с ожидаемыми значит программа работает верно
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.