Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- // класс точки плоскости
- class Point2 {
- private:
- int x;
- int y;
- public:
- Point2(int _x, int _y) : x(_x), y(_y) { }; // конструктор точки
- int getx() { return x; }; // доступ к x
- int gety() { return y; }; // доступ к y
- friend double distance(Point2*, Point2*); // расстояние между 2-мя точками
- };
- // дружественная функция вычисления расстояния между двумя точками
- double distance(Point2* r, Point2* q) {
- double d2=(r->x-q->x)*(r->x-q->x)+(r->y-q->y)*(r->y-q->y);
- return (sqrt(d2));
- }
- //Основная функция
- int main(int argc, char* argv[ ]) {
- Point2** p; // адрес массива адресов точек набора
- Point2* t; // адрес текущей точки
- Point2* tt;
- int x,y; // координаты точки
- int tx, ty;
- int i=0;
- int j=0; // номера точек набора
- double maxdist;
- if(argc < 2) //анализ числа аргументов командной строки
- return(-1);
- p = new Point2*[argc]; // распределить память под массив адресов точек
- while(++i < argc) { //цикл ввода точек из командной строки
- sscanf(argv[i], "%d%*c%d", &x, &y); // получение координат точки
- p[j]=new Point2(x,y); // динамическое конструирование точки
- j ++;
- }
- p[j]=NULL; // маркировка конца массива адресов точек набора
- for (i=0; p[i] != NULL; i++) { // цикл вычисления средних расстояний
- maxdist=0;
- t = p[i]; // фиксировать адрес текущей точки
- // цикл суммирования расстояний от текущей точки до остальных
- for (j=0; p[j] != NULL; j++)
- {
- tt=p[j];
- if (maxdist < distance(t, p[j]))
- {
- maxdist = distance(t, p[j]);
- tx=tt->getx(); ty=tt->gety();
- }
- }
- printf("Max distance from point (%d;%d)=%f. Second point is (%d;%d)\n", t->getx(), t->gety(), maxdist, tx, ty);
- }
- // освобождить дин. память точек набора по их адресам
- for(j=0; p[j] != NULL; j++)
- delete p[j];
- delete [ ]p; // освобождить дин. память массива адресов точек
- return 0; //корректное завершение программы
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement