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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Установка и настройка Eclipse + MinGW http://www.cyberforum.ru/cpp-beginners/thread638485.html
Установил MinGW и Eclips for C++ не удается запустить тестовый пример Hello world. Ошибка sh -c "autoreconf -i" Cannot run program "sh": Launching failed Как правильно и где прописывать все...
C++ Не могу правильно считать данные из потока Привет всем. У меня есть такая задача. На вход поступает дробь вида 1 1/4 (например). Эта дробь может быть представлена как только целой частью (1), так только дробной частью (1/4) так и полностью.... http://www.cyberforum.ru/cpp-beginners/thread638477.html
библиотеки алгоритмов C++
Где можно найти библиотеки 3j-, 6j- и 9j-символов?
Синтаксис C++
Кусок кода на C++. Помогите разобраться что означает в данном случае последовательность символов "|=" ? UDF_RC CForm1Class::CForm1( OBJ_PTR *obj, CYCLE cycle ) { INT Error =...
C++ посимвольное считывание http://www.cyberforum.ru/cpp-beginners/thread638434.html
У меня есть переменная типа string которая равна "000000000000". Мне нужно программно превратить ее вот в такую: 000-000-000-000. Я хочу считать 3 символа и поставить тире и тд.
C++ Сортировка по возрастанию простым выбором Не могу найти ошибку в коде. Выдает вот такую ошибку "Необработанное исключение в "0x002315c0" в "ЛВП.exe": 0xC00000FD: Stack overflow." #include "stdafx.h" #include <iostream> #include... подробнее

Показать сообщение отдельно
Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 267

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

16.08.2012, 14:25. Просмотров 1144. Ответов 5
Метки (Все метки)

Условие задачи: В одномерном массиве с четным количеством элементов (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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#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;
   vector<int> d;
   vector<int> e;
   vector<int> dotmin1;
   vector<int> dotmax1;
   vector<int> dotmin2;
   vector<int> dotmax2;
   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++)  
    for (int j = i+1; j < n; j++)  
    { 
     b.push_back(sqrt((a[2*j] - a[2*i]) * (a[2*j] - a[2*i]) + (a[2*j+1] - a[2*i+1]) * (a[2*j+1] - a[2*i+1]))); 
     d.push_back(i+1);
     e.push_back(j+1);
    }
   for (int i = 0; i < b.size(); i++)
    cout << b[i] << " ";
    cout << endl;
   for (int i = 0; i < d.size(); i++)
    cout << d[i] << " ";
    cout << endl;
   for (int i = 0; i < e.size(); i++)
    cout << e[i] << " ";
    cout << endl;
   float min = b[0]; 
   for (int i = 0; i < b.size(); i++)
    if (min >= b[i])
    { 
     min = b[i]; 
     dotmin1.push_back(d[i]);
     dotmin2.push_back(e[i]);
    }
    cout << "MIN: " << min << endl;
   for (int i = 0; i < dotmin1.size(); i++)
     cout << dotmin1[i] << " и " << dotmin2[i] << endl;   
   float max = b[0]; 
   for (int i = 0; i < b.size(); i++)
    if (max <= b[i])
    {
     max = b[i];  
     dotmax1.push_back(d[i]);
     dotmax2.push_back(e[i]);
    }
    cout << "MAX: " << max << endl;  
   for (int i = 0; i < dotmax1.size(); i++) 
     cout << dotmax1[i] << " и " << dotmax2[i] << endl;
   
system("PAUSE >> null");    
}
Для тестирования используйте точки: -2,1; 1,2; 0,0; 4,-3;
Точки записывать в командную строку так, как они написаны здесь.
Правильный ответ: для минимального расстояния точки 1 и 3; 2 и 3
Правильный ответ: для максимального расстояния точки 1 и 4

У меня на выходе:
для минимального расстояния точки 1 и 2; 1 и 3; 2 и 3
для максимального расстояния точки 1 и 2; 1 и 4

Откуда берутся точки 1 и 2 в обоих случаях?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru