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

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

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

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

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

Трям.

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

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

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

Заранее спс.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2011, 17:04     Множество точек m
Посмотрите здесь:

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

Множество точек на плоскости - C++
Даны 2 множества точек на плоскости. Выбрать 3 различные точки первого множества так , что бы треугольник с вершинами в этих точках...

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

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

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

Дано множество точек на плоскости - C++
Пожалуйста, если не сложно, нужен алгоритм с объяснением!! Заранее спасибо)) Дано множество точек на плоскости,заданных полярными...

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

Насчет задачи:
Множество - это ведь отсортированный контейнер. Поэтому не составит труда пробежаться по этому контейнеру, и проверять левые и правые элементы. Расстояние от проверяемой точки до исходной должно быть меньше, чем заданный радиус.
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
05.11.2011, 19:29     Множество точек m #3
Цитата Сообщение от Mиxaил Посмотреть сообщение
Поэтому не составит труда пробежаться по этому контейнеру, и проверять левые и правые элементы.
можно только правые
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
05.11.2011, 19:32     Множество точек m #4
Цитата Сообщение от valeriikozlov Посмотреть сообщение
можно только правые
Разумно... Согласен!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2011, 13:18     Множество точек m
Еще ссылки по теме:

Дано множество точек. Найти медиану. - C++
Учусь на первом курсе. Получил вот такое задание:"Медианой множества, состоящего из четного числа точек на плоскости, называется прямая,...

деление множество точек на две равные части - C++
Есть у меня множество точек и окружность с произвольным радиусом. Мне нужно найти такие две точки, лежащие в окружности, через которые...

задано множество n точек на плоскости своими координатами. - C++
задано множество n точек на плоскости своими координатами. найти и вывести на экран все точки, симметричные относительно координатных осей...

На плоскости задано множество N (1<N≤20) материальных точек - C++
Если честно я как то не могу полностью понять суть задачи, помогите желательно кодом мне срочно надо Заранее спасибо) На плоскости...


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

Или воспользуйтесь поиском по форуму:
MasoD
7 / 7 / 1
Регистрация: 03.10.2010
Сообщений: 44
06.11.2011, 13:18  [ТС]     Множество точек m #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;
}
Yandex
Объявления
06.11.2011, 13:18     Множество точек m
Ответ Создать тему
Опции темы

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