oakim
New Member
на тему задачи
ps2: разбиратсо в формуле криса больно напряжно ... проще и интереснее было вывести свою =)
ps3: проверял под gcc работоспособность под другими компиляторами не гарантирую
моё виденье решения... хотя всёравно если первая и вторая точка взяты на одной высоте прога не сработает как надо... по идее надо реализовать замену 2-й точки на 3-ю но ... лень однакоЗадача 2.
Найдите центр и радиус окружности, проходящей через три заданные точки на плоскости.
ps: так как програма работает с целочислеными координатоми есть некоторая неточность вычислений +-1 гдето#include <iostream>
#include <math.h>
using namespace std;
int check(int *x1 , int *x2 , int *x3 , int *y1 , int *y2 , int *y3)
{
cout << "введите числа\n";
cin >> *x1 >> *y1 >> *x2 >> *y2 >> *x3 >> *y3;
if (!(2*(((*x3-*x2)*(*y2-*y1))-((*x1-*x2)*(*y2-*y3))))){cout << "не допустимые координаты\n"; return 1};
if (!(2*(*y2-*y1))){ cout << "не допустимые координаты\n"; return 1};
return 0;
}
int main()
{
int x1,x2,x3,y1,y2,y3,x,y,r;
while (check(&x1,&x2,&x3,&y1,&y2,&y3)) {};
x=(y3*(-(x2*x2)-(y2*y2)+(y1*y1)+(x1*x1))+y2*(-(y1*y1)-(x1*x1)+(y3*y3)+(x3*x3))+y1*((x2*x2)+(y2*y2)-(y3*y3)-(x3*x3)))/(2*(((x3-x2)*(y2-y1))-((x1-x2)*(y2-y3))));
y=((2*x*(x1-x2))+(x2*x2)+(y2*y2)-(y1*y1)-(x1*x1))/(2*(y2-y1));
r=sqrt ((x2-x)*(x2-x)+(y2-y)*(y2-y));
cout << "x1 " << x1 << "\t y1 " << y1<<'\n';
cout << "x2 " << x2 << "\t y2 " << y2<<'\n';
cout << "x3 " << x3 << "\t y3 " << y3<<'\n';
cout << "x " << x << "\t y " << y<<'\n';
cout << "r " << r << '\n';
return 0;
}
ps2: разбиратсо в формуле криса больно напряжно ... проще и интереснее было вывести свою =)
ps3: проверял под gcc работоспособность под другими компиляторами не гарантирую
Останнє редагування: