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

Добавлен Egor, отредактирован Egor Sep 11, 2016
Метки: 
(нет)

Вы просматриваете старую версию (v. 4) этой страницы.

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

#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
pow(a,b) - возведение числа a в степень b (оба могут быть и целыми и вещественными)

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

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

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

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

double x[10],y[10];
int i,n;
cin >> n;
for (i=0; i<n; i++) cin >> x[i] >> y[i];

Расстояние от точки до n точек

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; // Вывод в столбик
...

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

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++)
di=sqrt(pow(x[i]-x[i+1],2)+pow(y[i]-y[i+1],2));

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

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[i,j]

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));

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

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) - Ошибка/новая особенность - Свяжитесь с Администраторами