Даны два множества точек A и B. Множество A содержит m точек, а множество B – n точек, где m и n – заданы натуральные числа. Найти расстояние между множествами A и B. Расстояние между двумя множествами точек определять как:
а) расстояние между ближайшими друг к другу точками этих множеств;
б) расстояние между самыми отдаленными точками этих множеств;
C/C++
Нужна помощь в написании кода С++, пожалуйста.(Структуры)
С двумя динамическими массивами структур, представляющими из себя координаты точек в трёхмерном пространстве:
#include <cmath>
#include <iostream>
using namespace std;
struct point {double x, y, z; };
void enter(point *X, int size, char symbol)
{ cout << "Set " << symbol << " (" << size <<
" points):" << endl; for (int j = 0; j < size; j++)
{ cout << j + 1 << ") "; cin >> X[j].x >> X[j].y
>> X[j].z; } }
double quadr(point a, point b)
{ double x = a.x - a.x, y = a.y - b.y, z = a.z - b.z;
return x * x + y * y + z * z; }
int main()
{ int k, l, m, n; cout << "m n: "; cin >> m >> n;
double Ra, Rb, r; point *A = new point [m],
*B = new point [n]; enter(A, m, 'A'); enter(B, n, 'B');
Ra = Rb = quadr(A[0], B[0]);
for (k = 0; k < m; k++) for (l = 0; l < n; l++)
{ r = quadr(A[k], B[l]); if (r < Ra) Ra = r;
if (r > Ra) Rb = r; } cout << "a) " << sqrt(Ra)
<< ", b) " << sqrt(Rb) << endl; cin.get();
cin.get(); }
#include <cmath>
#include <iostream>
using namespace std;
struct point {double x, y, z; };
void enter(point *X, int size, char symbol)
{ cout << "Set " << symbol << " (" << size <<
" points):" << endl; for (int j = 0; j < size; j++)
{ cout << j + 1 << ") "; cin >> X[j].x >> X[j].y
>> X[j].z; } }
double quadr(point a, point b)
{ double x = a.x - a.x, y = a.y - b.y, z = a.z - b.z;
return x * x + y * y + z * z; }
int main()
{ int k, l, m, n; cout << "m n: "; cin >> m >> n;
double Ra, Rb, r; point *A = new point [m],
*B = new point [n]; enter(A, m, 'A'); enter(B, n, 'B');
Ra = Rb = quadr(A[0], B[0]);
for (k = 0; k < m; k++) for (l = 0; l < n; l++)
{ r = quadr(A[k], B[l]); if (r < Ra) Ra = r;
if (r > Ra) Rb = r; } cout << "a) " << sqrt(Ra)
<< ", b) " << sqrt(Rb) << endl; cin.get();
cin.get(); }
class MyPoint
{
public:
int x,y,z;
MyPoint *next;
void add(MyPoint e)
{
if (this->next==NULL)
{this->next=e;}
else
{this->next->add(e);}
}
double range(MyPoint e)
{
double xx=this->x-e->x;
double yy=this->z-e->z;
double zz=this->z-e->z;
xx*=xx;
yy*=yy;
zz*=zz;
return std::math::sqrt(xx+yy+zz);
}
};
class Myset
{
public:
MyPoint first;
void add(MyPoint e)
{
if (this->first==NULL)
{this->first=e;}
else
{this->first->add(e);}
}
double range1 (Myset e)
{
MyPoint i, j;
i=this->first;
j=e->first;
double res, dis;
while (i!=NULL)
{
while (j!=NULL)
{
dis=i.range(j);
//тут меньше больше если минимум максимум
if (dis>res)
{res=dis;}
j=j->next;
}
i=i->next;
}
return res;
}
}
{
public:
int x,y,z;
MyPoint *next;
void add(MyPoint e)
{
if (this->next==NULL)
{this->next=e;}
else
{this->next->add(e);}
}
double range(MyPoint e)
{
double xx=this->x-e->x;
double yy=this->z-e->z;
double zz=this->z-e->z;
xx*=xx;
yy*=yy;
zz*=zz;
return std::math::sqrt(xx+yy+zz);
}
};
class Myset
{
public:
MyPoint first;
void add(MyPoint e)
{
if (this->first==NULL)
{this->first=e;}
else
{this->first->add(e);}
}
double range1 (Myset e)
{
MyPoint i, j;
i=this->first;
j=e->first;
double res, dis;
while (i!=NULL)
{
while (j!=NULL)
{
dis=i.range(j);
//тут меньше больше если минимум максимум
if (dis>res)
{res=dis;}
j=j->next;
}
i=i->next;
}
return res;
}
}
Похожие вопросы
- C++.Нужна помощь в написании кода.
- Нужна помощь с написанием кода на языке "С"
- Помощь в написании кода на C++
- Возникла проблема при написании кода (с++). Помогите пожалуйста.
- Добрый день. Нужна помощь в реализации динамических структур. Нужно написать дек с использованием malloc.
- Очень нужна помощь. нужен код на C. Задачка будет в описании.
- Посмотрите пожалуйста правильность написания кода С++
- Помогите с кодом на тему :структуры С++
- Помогите с написанием кода на Си для микроконтроллера
- Помогите с написанием кода С++