Рабочий стол > DL Руководство пользователя > ... > Быстрое погружение в язык C++ > Геометрия > Просмотр
Геометрия Войти | Зарегистрироваться   Просмотр версии для печати текущей страницы.

Добавлено Egor, последний раз изменено Egor Oct 09, 2016  (просмотр изменений)
Метки: 
(нет)

Расстояние между двумя точками 


prog.cpp
#include <bits/stdc++.h>using namespace std;
int main()
{
 double x1,x2,y1,y2,d;
 cin >> x1 >> y1 >> x2 >> y2;
 d=sqrt(pow(x2-x1,2)+pow(y2-y1,2));
 cout << setprecision(2) << fixed;
 cout << d;
}

//   sqrt(x)  - извлечение корня квадратного из x
//   pow(a,b) - возведение числа a в степень b (оба могут быть и целыми и вещественными)

Сравнение "на равенство" вещественных чисел

prog.cpp
...  double d1,d2;
  ...
  if (abs(d1-d2)<0.001) cout << "Yes";
    else                cout << "No";

Ввод массивов точек (10 и n)

prog.cpp
double x\[10\],y\[10\]; int    i;
  ...
 for (i=0; i<10; i++) cin >> x[i] >> y[i];
  ...


 double x[???],y[???];
 int    i,n;
 cin >> n;
 for (i=0; i<n; i++) cin >> x[i] >> y[i];{}code{*}Расстояние от точки до n точек{*}{code:title=prog.cpp|borderStyle=solid}double x[10],y[10],d[10],x0,y0;
 int    i;
 ...
 cin >> x0 >> y0;
 cin >> n;
 for (i=0; i<n; i++) cin >> x[i] >> y[i];
 ...
 for (i=0; i<n; i++)
   d[i]=sqrt(pow(x[i]-x0,2)+pow(y[i]-y0,2));
 ...
 cout << setprecision(2) << fixed;
 for (i=0; i<10; i++)
   cout << d[i] << endl;                        // Вывод в столбик
 ...

Соседние расстояния

prog.cpp
double x\[100\],y\[100\],d\[100\]; int    i,n;
 cin >> n;
 for (i=0; i<n; i++) cin >> x[i] >> y[i];

 for (i=0; i<n-1; i++)
   d[i]=sqrt(pow(x[i]-x[i+1],2)+pow(y[i]-y[i+1],2));

Расстояния между всеми парами точек

prog.cpp
double x\[400\],y\[400\],d\[400\]\[400\]; int    i,j,n;
 cin >> n;
 for (i=0; i<n; i++) cin >> x[i] >> y[i];

 for (i=0; i<n; i++)
   for (j=0; j<n; j++)
     d[i][j]=sqrt(pow(x[i]-x[j],2)+pow(y[i]-y[j],2));


 // Альтернативный вариант - заполняем только НАД 1 ДИАГОНАЛЬЮ
 // поскольку   d[i,j] = d[j,i]

 for (i=0; i<n; i++)
   for (j=i+1; j<n; j++)
     d[i][j]=sqrt(pow(x[i]-x[j],2)+pow(y[i]-y[j],2));

Расстояние между двумя множествами точек

prog.cpp
double x1\[300\],y1\[300\],x2\[400\],y1\[400\],d\[300\]\[400\]; int    i,j,n;

  ...

 cin >> n1;
 for (i=0; i<n1; i++) cin >> x1[i] >> y1[i];

 cin >> n2;
 for (i=0; i<n2; i++) cin >> x2[i] >> y2[i];

 for (i=0; i<n1; i++)
   for (j=0; j<n2; j++)
     d[i][j]=sqrt(pow(x1[i]-x2[j],2)+pow(y1[i]-y2[j],2));
  ...
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: http://www.atlassian.com/software/confluence Build:#2.6.1 916) - Ошибка/новая особенность - Свяжитесь с Администраторами