Advertisement
Guest User

Untitled

a guest
Feb 18th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.52 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <stdio.h>
  3. #include <math.h>
  4.  
  5. class Point2
  6. {
  7. private:
  8. int x;
  9. int y;
  10. public:
  11. Point2(int _x, int _y) : x(_x), y(_y) { }; // конструктор точки
  12. int getx() { return x; }; // доступ к x
  13. int gety() { return y; }; // доступ к y
  14. double distance(Point2*, Point2*); // расстояние между 2-мя точками
  15. };//Point2
  16.  
  17. //функция вычисления расстояния между двумя точками
  18. double Point2::distance(Point2* r, Point2* q)
  19. {
  20. double d2 = (r->x - q->x)*(r->x - q->x) + (r->y - q->y)*(r->y - q->y);
  21. return (sqrt(d2));
  22. } // distance
  23.  
  24. //Основная функция
  25. int main(int argc, char* argv[])
  26. {
  27. double dist; // rasstoyanie mezdu tochkami
  28. double max = 0.0; // max rasstoyanie mezdu tochkami
  29. int maxx, maxy, maxx1, maxy1;
  30. Point2** p; // адрес массива адресов точек набора
  31. Point2* t; // адрес текущей точки
  32. int x, y; // координаты точки
  33. int i = 0;
  34. int j = 0; // номера точек набора
  35. if (argc < 2) //анализ числа аргументов командной строки
  36. return(-1);
  37. p = new Point2*[argc]; // распределить память под массив адресов точек
  38. while (++i < argc)
  39. { //цикл ввода точек из командной строки
  40. sscanf(argv[i], "(%d%*c%d)", &x, &y); // получение координат точки
  41. p[j] = new Point2(x, y); // динамическое конструирование точки
  42. j++;
  43. } // while
  44. p[j] = NULL; // маркировка конца массива адресов точек набора
  45.  
  46. for (i = 0; p[i] != NULL; i++)
  47. {
  48. t = p[i];
  49. for (j = 0; j != NULL; j++)
  50. {
  51. if ((t->getx()) == (t->gety()) && (p[j]->getx()) == (p[j]->gety()))
  52. {
  53. dist = t->distance(t, p[j]);
  54. if (dist >= max)
  55. {
  56. max = dist;
  57. maxx = t->getx();
  58. maxy = t->gety();
  59. maxx1 = p[j]->getx();
  60. maxy1 = p[j]->gety();
  61. }
  62. }
  63. }
  64. }
  65.  
  66. printf("x=%d\n x2=%d\n y=%d\n y2=%d\n distance=%f\n", maxx, maxx1, maxy, maxy1, max);
  67.  
  68.  
  69.  
  70. // освобождить дин. память точек набора по их адресам
  71. for (j = 0; p[j] != NULL; j++)
  72. delete p[j];
  73. delete[]p; // освобождить дин. память массива адресов точек
  74. return 0; //корректное завершение программы
  75. }// main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement