|  | h1. {color:#003366}1. Расстояние между двумя точками{color} |
| |
| #include <bits/stdc++.h> |
| using namespace std; |
| | h1. {color:#000000}{*}Расстояние между двумя точками{*}{color}{color:#000000} {color} |
| \\ |
| {code:title=prog.cpp\|borderStyle=solid} |
| #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 (оба могут быть и целыми и вещественными) |
| |
| |
| 2. Сравнение "на равенство" вещественных чисел |
| |
| | // sqrt(x) - извлечение корня квадратного из x |
| // pow(a,b) - возведение числа a в степень b (оба могут быть и целыми и вещественными) |
| {code} |
| *Сравнение "на равенство" вещественных чисел* |
| \\ \\ |
| {code:title=prog.cpp\|borderStyle=solid} |
| ... double d1,d2; |
| ... |
 |  | double d1,d2; |
| ... |
| if (abs(d1-d2)<0.001) cout << "Yes"; |
| else cout << "No"; |
 |  | |
| |
| 3-4. Ввод массивов точек (10 и n) |
| |
| double x[10],y[10]; |
| int i; |
| | {code} |
| *Ввод массивов точек (10 и n)* |
| \\ \\ |
| {code:title=prog.cpp\|borderStyle=solid} |
| 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]; |
| |
| |
| 5. Расстояние от точки до n точек |
| |
| double x[10],y[10],d[10],x0,y0; |
| | 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; // Вывод в столбик |
| ... |
 |  | |
| 6. Соседние расстояния |
| |
| double x[100],y[100],d[100]; |
| int i,n; |
| |
| | {code} |
| *Соседние расстояния* |
| \\ \\ |
| {code:title=prog.cpp\|borderStyle=solid} |
| 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)); |
 |  | |
| |
| 7. Расстояния между всеми парами точек |
| |
| |
| double x[400],y[400],d[400][400]; |
| int i,j,n; |
| | {code} |
| *Расстояния между всеми парами точек* |
| \\ \\ |
| {code:title=prog.cpp\|borderStyle=solid} |
| 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)); |
 |  | {code} |
| *Расстояние между двумя множествами точек* |
| \\ |
| {code:title=prog.cpp\|borderStyle=solid} |
| double x1\[300\],y1\[300\],x2\[400\],y1\[400\],d\[300\]\[400\]; int i,j,n; |
| |
 |  | |
| 8. Расстояние между двумя множествами точек |
| |
| 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)); |
| ... |
 | | {code} |