Задан вещественный массив размера 2*N, каждая пара элементов которого
содержит координаты точки x и y. Определить номера пар задающих точки с
максимальным расстоянием между ними.
не могли бы вы объяснить немного сам смысл задачи? и как можно организовать цикл, чтобы рассмотреть все комбинации?
расстояние я понимаю нужно считать по формуле: sqrt( pow((x2-x1),2.0)+pow((y2-y1),2.0))?
for (i=0; i<n-1; i++)Примерно так
for (j=i+1; j<n; j++)
ну так мы же получим только согласно задаче x или y, а как сделать, чтобы получить и x, и y, чтобы посчитать расстояние?
либо я не совсем понимаю задание
хм. Данные расположены
XY XY XY XY
так? т.е. вектор?
вот я и не знаю, что тут имеется в виду, просто смущает то, что в задании массива цифра 2)
не может быть так:
X X X X
Y Y Y Y
?
хотя вряд ли наверное?
если матрица, то просто один цикл.
Если вектор. пусть будут точки
11 22 33 44. Итого четыре точки (X и Y)
for (i=0; i<n-1; i++) //n = 4
for (j=i+1; j<n; j++)
if ((i-1)*2 +1) //будет X
if ((i-1)*2 +2) //будет Y
=(((
пытаюсь вникнуть, но не понимаю
while (i<2) {
for (int j=0; j<m-1; j++) // получаем x
for ( int jj=1; jj<m; jj++) // получаем y
...
#include <stdio.h>Вот как бы визуальное представление.
#include <iostream>
using namespace std;
int main(int argc, char **argv)
{
int arr[2][4];
for (int i = 0; i<2; i++)
for(int j = 0; j<4; j++)
arr[i][j] = i*10 + j +1;
for (int i = 0; i<2; i++){
for(int j = 0; j<4; j++)
cout << arr[i][j] << '\t';
cout << '\n';
}
cout << '\n';
for (int i = 0; i<4-1; i++){
cout << "ARR I= "<< i <<"; " << arr[0][i] << "__" << arr[1][i] << '\t';
cout << '\n';
for (int j =i+1; j<4; j++){
cout << "ARR J=" << j << "; " << arr[0][j] << "__" << arr[1][j] << '\t';
}
cout << '\n';
cout << '\n';
}
return 0;
}
М | А почему вторая тема за день с тем же названием?? *Оля*, у вас так принято? Подумай немного о других.. Переделай, пожалуйста. Кстати, это также повод перечитать еще разок три пункта правил этого раздела (вверху страницы). Особенно, третий пункт. |
Спасибо.
Client, спасибо большое!)
Lapp, извиняюсь, постараюсь больше правила не нарушать)
int arr[2][4];
const int n = 4;
double arr[2*n] = {2, 2, 6, 6, 5, 2, 4, 1};
int first = -1, second = -1;
double dist = 0.0;
for(int i = 0; i < n - 1; i++)
{
for(int j = i + 1; j < n; j++)
{
double new_dist = sqrt(SQR(arr[2*i] - arr[2*j]) + SQR(arr[2*i+1] - arr[2*j+1]));
if(new_dist > dist)
{
dist = new_dist;
first = i; second = j;
}
}
}
да, в условии подразумевалось именно это, вы, как всегда, правы, спасибо большое!