Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Разработать объектно-ориентированную программу поиска в любом заданном наборе точек плоскости
- пары наиболее отдаленных точек, которые разделены прямой с уравнением y=x. Декартовые координаты
- всех точек заданного набора должны быть указаны парами целых чисел в аргументах командной строки
- вызова программы. Координаты полученной пары точек и расстояние между ними должны отображаться
- строкой потока стандартного вывода. В программе должен быть реализован класс точки с приватными
- полями для ее декартовых координат, публичными методами доступа к ним и конструктором инициализации
- их значений, а также компонентный метод вычисления расстояния до любой другой заданной точки.
- Кроме того, в программе должно быть предусмотрено динамическое распределение памяти для всех
- точек заданного набора и массивов их адресов.
- Кулагин Арсений Олегович, РК6-23Б, 24.02.20
- /*
- #include <iostream>
- #include <math.h>
- using namespace std;
- class Point
- {
- private:
- int x, y;
- public:
- friend double distance(Point*, Point*);
- Point(int _x,int _y): x(_x), y(_y)
- {
- }
- int getx()
- {
- return x;
- }
- int gety()
- {
- return y;
- }
- };
- int main(int noarg, char* arg[])
- {
- Point** p;
- int i, j, x, y;
- void finding_the_greatest_distance(Point**);
- if(noarg<2)
- {
- cout << "Недостаточное количество точек." << endl;
- exit(-1);
- }
- p=new Point* [noarg];
- for(i=1, j=0; i<noarg; i++, j++)
- {
- sscanf(arg[i], "%d%*c%d", &x, &y);
- p[j]=new Point(x,y);
- }
- p[j]=NULL;
- finding_the_greatest_distance(p);
- for(j=0; p[j]!=NULL; j++)
- {
- delete p[j];
- }
- delete []p;
- return 0;
- }
- double distance(Point* A, Point* B)
- {
- double d;
- d=sqrt((A->x-B->x)*(A->x-B->x)+(A->y-B->y)*(A->y-B->y));
- return d;
- }
- void finding_the_greatest_distance(Point** p)
- {
- int i, j, A, B;
- double d, maxd=0;
- for(i=0; p[i]!=NULL; i++)
- {
- for(j=i+1; p[j]!=NULL; j++)
- {
- if((p[i]->gety()-p[i]->getx())*(p[j]->gety()-p[j]->getx())<0)//проверка на нахождение точек по разные стороны от прямой y=x
- {
- d=distance(p[i], p[j]);
- if(d>maxd)
- {
- maxd=d;
- A=i;
- B=j;
- }
- }
- }
- }
- if(maxd==0)
- {
- cout << "Все точки не удовлетворяют условиям задачи." << endl;
- }
- else
- {
- cout << "Максимальное расстояние: " << maxd << endl;
- cout << "Координаты точки А: " << p[A]->getx() << ";" << p[A]->gety() << endl;
- cout << "Координаты точки B: " << p[B]->getx() << ";" << p[B]->gety() << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement