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

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

Войти
Регистрация
Восстановить пароль
 
MasoD
7 / 7 / 1
Регистрация: 03.10.2010
Сообщений: 44
#1

Множество точек m - C++

05.11.2011, 17:04. Просмотров 1156. Ответов 4
Метки нет (Все метки)

Трям.

Имеется условие: Задано множество точек m в трехмерном пространстве. Найти такую из них, что шар заданного радиуса с центром в этой точке содержит максимальное число точек из m.

Примерный алгоритм: Проверяем в цикле все точки. Проверяем во вложенном цикле расстояние от текущей точки до одной из остальных. Если оно меньше R - увеличиваем счетчик для этой точки. После этого еще раз проверям все точки, у которой счетчик больше - та и есть искомая.

Но вот с реализацией проблемы. С си знаком всего пол семестра, поэтому никак не получается написать.

Заранее спс.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2011, 17:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Множество точек m (C++):

На плоскости заданы множество точек А и множество прямых В (каждая прямая задается значениями коэффициентов ур - C++
На плоскости заданы множество точек А и множество прямых В (каждая прямая задается значениями коэффициентов уравнения). Найти две такие...

На плоскости заданы множество точек А и множество прямых B - C++
На плоскости заданы множество точек А и множество прямых B. Найти две такие различные точки из А, чтобы проходящая через них прямая была...

Дано множество точек на плоскости, заданных полярными координатами. Получить декартовы координаты этих точек - C++
Получилось сделать для координаты одной точки, а как сделать для множества точек, через цикл или массив? #include <stdio.h> #include...

Множество точек.Найти множество треугльники - C++
ДАно 3n точек на плоскости , причем не какие три не лежат на одной прямой. Построить множество треугольников с вершинами в этих точках так...

На плоскости задано множество точек. Выбрать три различные точки так, чтобы проходящая через них окружность делила это множество на группы - C++
На плоскости задано множество точек. Выбрать три различные точки так, чтобы проходящая через них окружность делила это множество на группы,...

Задано множество точек в трехмерном пространстве. Найти минимум радиусов шаров с центрами в этих точках, содержащих ровно n точек этого множества - C++
Задано множество точек в трехмерном пространстве. Найти минимум радиусов шаров с центрами в этих точках, содержащих ровно n точек этого...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
05.11.2011, 18:30 #2
MasoD, ЯП - это лишь способ реализации алгоритма, и ничего больше! Поэтому говорить, что с Си знакомы пол семестра ( этого больше, чем достаточно ), не имеет смысла, если можете реализовать решение этой проблемы математически.

Насчет задачи:
Множество - это ведь отсортированный контейнер. Поэтому не составит труда пробежаться по этому контейнеру, и проверять левые и правые элементы. Расстояние от проверяемой точки до исходной должно быть меньше, чем заданный радиус.
0
valeriikozlov
Эксперт C++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
05.11.2011, 19:29 #3
Цитата Сообщение от Mиxaил Посмотреть сообщение
Поэтому не составит труда пробежаться по этому контейнеру, и проверять левые и правые элементы.
можно только правые
1
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
05.11.2011, 19:32 #4
Цитата Сообщение от valeriikozlov Посмотреть сообщение
можно только правые
Разумно... Согласен!
0
MasoD
7 / 7 / 1
Регистрация: 03.10.2010
Сообщений: 44
06.11.2011, 13:18  [ТС] #5
Вот, может кому пригодится.
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
67
68
69
70
71
72
#include <iostream>
#include <locale>
#include <cmath>
#include <iomanip>
 
using std::cout;
using std::cin;
using std::endl;
using std::setw;
 
int main()
{
    setlocale(LC_ALL,"Russian");
    struct coord
    {
        int x;
        int y;
        int z;
    };
    const int n = 15;
    coord a[n];
    coord b;
    int amt[n] = {0};
    int R = 0;
    int max = 0;
    double dis = 0.0;
    srand(time(NULL));
    for (int i = 0; i < n; i++)
    {
        a[i].x = rand() % 20;
        a[i].y = rand() % 20;
        a[i].z = rand() % 20;
    }
    cout << endl
        << "Введите радиус: ";
    cin >> R;
    for (int i = 0; i < n; i++) 
        for (int j = i + 1; j < n; j++)
        {                           
            dis = sqrt(pow((a[j].x - a[i].x), 2.0) + pow((a[j].y - a[i].y), 2.0) + pow((a[j].z - a[i].z), 2.0));
            if (dis < R)
                amt[i]++;
        }
    for (int i = 0; i < n; i++)
        if ((amt[i] >= max) && (amt[i] != 0))
        {
            max = amt[i];
            b.x = a[i].x;
            b.y = a[i].y;
            b.z = a[i].z;
        }
    cout << endl
        << "Случайные точки в пространстве:"
        << endl;
    for (int i = 0; i < n; i++)
        cout << setw(4) << "(" << setw(2) << a[i].x << ", " << setw(2) << a[i].y << ", " << setw(2) << a[i].z << ")"
            << endl;
    if (b.x < 0)
        cout << endl
            << "Искомая точка отсутствует."
            << endl;
    else
    {
        cout << endl
            << "Шар радиуса " << R << " с центром в точке " << "(" << b.x << ", " << b.y << ", " << b.z << ")" << " содержит максимальное число точек"
            << endl
            << "из m."
            << endl;
    }
    system("pause");
    return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2011, 13:18
Привет! Вот еще темы с ответами:

множество точек - C++
Задано множество точек, найти пару самых удаленных и самих близких плз помогите P.S. попроше напишите а то проеподша требует от простоту

Множество точек и окружностей - C++
Помогите пожалуйста, в программе нельзя использовать структуры, как мне их заменить на массивы? Заранее огромное спасибо.. #include...

Множество точек в пространстве - C++
Множество точек в пространстве задано своими целочисленными координатами.Опред.совподает ли хотя бы одна из точек с началом координат. ...

Окружнось и множество точек - C++
Задача звучит так: There are multitude of points(M) defined on the plane and the circle. Choose two different points from M, in such...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.11.2011, 13:18
Ответ Создать тему
Опции темы

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