Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 270
#1

Найти номера наиболее и наименее удаленных друг от друга точек - C++

11.08.2012, 23:11. Просмотров 1333. Ответов 6
Метки нет (Все метки)

В одномерном массиве с четным количеством элементов (2N) находятся координаты N точек плоскости. Они располагаются в следующем порядке: x1, у1, х2, у2, x3, y3 и т.д. Найти номера наиболее и наименее удаленных друг от друга точек.

Вот мой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <iomanip>
#include <vector>
#include <cmath>
using namespace std;
 
int main()
{ 
   int n;
   float a[n];
   cout << "Введите количество точек:" << endl;
   cin >> n;
    cout << "Введите координаты точек:" << endl;
   for (int i = 0; i < n*2; i++)
    cin >> a[i];
   system("CLS");
   vector<float> b;
   for (int i = 0; i < n; i++)
    cout << "X: " << a[2*i] << " " << setw(7) << "Y: " << a[2*i+1] << endl; // Вывод координат 
   for (int i = 0; i < n; i++)  
    b.push_back(sqrt((a[2*i] * a[2*i])+(a[2*i+1] * a[2*i+1]))); // запись в массив b расстояние от начала координат  до точек 
   for (int i = 0; i < b.size(); i++)
    cout << b[i] << " "; // Вывод расстояний 
system("PAUSE >> null");    
}
Собственно сам вопрос: Как найти все возможные разности между расстояниями, что бы потом из них найти наибольшее и наименьшее?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.08.2012, 23:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти номера наиболее и наименее удаленных друг от друга точек (C++):

Задан массив точек. Найти номера наиболее и наименее удаленных друг от друга точек. - C++
Условие задачи: В одномерном массиве с четным количеством элементов (2N) находятся координаты N точек плоскости. Они располагаются в...

найти две наиболее удаленных друг от друга точки (множество точек задано на плоскости) - C++
Помогите, пожалуйста, написать программу на С++, используя структуру point для хранения координат точки: следует найти две наиболее...

Найти две наиболее удаленных друг от друга точки - C++
Структуры: I. Решить задачу, используя структуру point для хранения координат точки: Множество точек задано в пространстве. Найти две...

В заданном множестве точек найти три пары самых удаленных друг от друга точек - C++
Координаты точки на площади задаются парой действительных чисел. Дано натуральное число n и координаты n точек. Найти три пары самых...

Найти номера двух наиболее удаленных точек - C++
Помогите решить данную задачу: Даны значения двух вещественных массива x и y размером n. Рассматривая пары значений (x1:y1),...(xn;yn) как...

Динамическая матрица (Найти координаты двух точек, наиболее удалённых друг от друга) - C++
Дана динамическая матрица размера N*2 (N вводится). Каждая строка матрицы содержит значения координат X и Y одной точки на плоскости,...

6
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
11.08.2012, 23:24 #2
примитивно: определить заведомо наибольшее и наименьшее расстояние, затем сравнивать каждую точку с каждой (кроме себя), и если расстояние выходит за рамки, запоминать новое.
0
grizlik78
Эксперт С++
1971 / 1464 / 122
Регистрация: 29.05.2011
Сообщений: 3,029
11.08.2012, 23:27 #3
Полный перебор (с квадратичной сложностью) :
C++
1
2
3
4
5
6
7
8
9
for (int first = 0; first < n; ++first)
{
    for (int second = first + 1; second < n; ++second)
    {
        // расстояние между точками first и second
        double dist = hypot(a[2*first] - a[2*second], a[2*first+1] - a[2*second+1]);
        // сравниваем с мин/макс... 
    }
}
0
rinat_w
89 / 85 / 4
Регистрация: 13.11.2011
Сообщений: 192
Завершенные тесты: 1
12.08.2012, 00:11 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include<iostream>
#include<ctime>
#include<cmath>
using namespace std;
double dist(int *a, int i1, int i2){
       return sqrt((a[i1]-a[i2])*(a[i1]-a[i2])+(a[i1+1]-a[i2+1])*(a[i1+1]-a[i2+1]));
}
int main(){
    srand(time(0));
    int n;
    cout<<"n="; cin>>n;
    int *a=new int[2*n];
    for (int i=0; i<2*n; i++){
        a[i]=rand()%200-100;
        if (i%2==0) cout<<a[i]<<"\t";
        else cout<<a[i]<<"\n";
    }
    int min1=0, min2=2*n-2, max1=0, max2=2*n-2;
    for (int i=0; i<2*n-1; i+=2)
        for (int j=i+2; j<2*n-1; j+=2){
            if (dist(a,min1,min2)>dist(a,i,j)){
               min1=i;
               min2=j;
            }
            if (dist(a,max1,max2)<dist(a,i,j)){
               max1=i;
               max2=j;
            }
        }
    cout<<endl<<"min distance "<<dist(a, min1, min2)<<":\nx1="<<a[min1]<<", y1="<<a[min1+1]<<"\nx2="<<a[min2]<<", y2="<<a[min2+1];
    cout<<endl<<"max distance "<<dist(a, max1, max2)<<":\nx1="<<a[max1]<<", y1="<<a[max1+1]<<"\nx2="<<a[max2]<<", y2="<<a[max2+1];
    system("pause");
    return 0;
}
0
grizlik78
Эксперт С++
1971 / 1464 / 122
Регистрация: 29.05.2011
Сообщений: 3,029
12.08.2012, 00:18 #5
rinat_w, в циклах индексы разве не на 2 надо увеличивать? (строки 19 и 20)
0
rinat_w
89 / 85 / 4
Регистрация: 13.11.2011
Сообщений: 192
Завершенные тесты: 1
12.08.2012, 00:19 #6
grizlik78, да, точно! уже изменил
0
Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 270
12.08.2012, 20:16  [ТС] #7
Всем большое спасибо!
0
12.08.2012, 20:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.08.2012, 20:16
Привет! Вот еще темы с ответами:

Разработать программу для нахождения пары самых удаленных друг от друга точек - C++
N точек на плоскости заданы своими координатами, значения которых формируются случайным образом. Разработать программу для нахождения пары...

Найти элементы массива наименее отличающиеся друг от друга - C++
Доброго времени суток, помогите пожалуйста реализовать программу: Дан целочисленный массив из 30 элементов. Элементы массива могут...

Найти наименее удаленные друг от друга точки на плоскости - C++
Приветствую ребята! Нужна помощь, помогите решить задачу на С++, Заранее благодарен. В файле содержатся координаты нескольких точек...

Найти наиболее и наименее удаленные точки. Вычисление расстояния между парой точек оформить функцией - C++
Даны координаты N точек на плоскости в виде маccивов X и Y. Найти наиболее и наименее удаленные точки. Вычисление расстояния между парой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.