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

Найти точку на плоскости, сумма расстояний от которой до остальных точек множества максимальна - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
qloaqa
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 7
19.12.2011, 20:56     Найти точку на плоскости, сумма расстояний от которой до остальных точек множества максимальна #1
Друзья, мне вновь необходима любая ваша помощь по теме)
Задача такова: решить задачу, с помощью структуру для хранения координат точки, нужно найти точку на плоскости сумма расстояний от которой до остальных точек множества максимальна.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2011, 20:56     Найти точку на плоскости, сумма расстояний от которой до остальных точек множества максимальна
Посмотрите здесь:

C++ Найти непрерывную последовательность положительных чисел, сумма элементов которой максимальна
найти такую точку заданного на плоскости множества точек, сумма расстояний от которой до остальных минимальна. C++
C++ Найти точку, у которой сумма расстояний до других точек наименьшая
найти такую точку заданного на плоскости множества точек, сумма расстояний от которой до остальных минимальна C++
C++ Найти строку, в которой сумма модулей элементов максимальна и назвать её номер
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
iomanip
Сообщений: n/a
19.12.2011, 21:43     Найти точку на плоскости, сумма расстояний от которой до остальных точек множества максимальна #2
В первом моём посте описка - в пространстве, а не на плоскости
Собственно вот что получилось
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
#include <iostream>
#include <cmath>
using namespace std;
 
struct point
{ float x,y,z;
};
double dlina (point a)
{ return sqrt(a.x*a.x+a.y*a.y+a.z*a.z);}
int main()
{ point a[100];
int n;
cout<<"введите n";
cin>>n;
for (int i=0; i<n; i++)
{cout<<"введите координаты точки"<<i<<" от точки";
cin>>a[i].x>>a[i].y>>a[i].z;}
double max=0; int k=0;
for (int i=0; i<n; i++)
    if (dlina (a[i])>max)
{max=dlina(a[i]);
k=i;}
cout<<"k="<<k;
return 0; }
Но теперь к вам другой вопрос, почему, выдается k=0 и ничего не считается, если я к примеру в консоли задаю:
введите n 2
введите координаты точки0 от точки (3;5)
введите координаты точки1 от точкиk=0
К слову почему-то не могу зайти как qloaqa.
Ree.exe
56 / 56 / 4
Регистрация: 01.08.2011
Сообщений: 141
19.12.2011, 23:18     Найти точку на плоскости, сумма расстояний от которой до остальных точек множества максимальна #3

Не по теме:

delete



Добавлено через 10 минут
Вот тесть
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
#include<iostream>
#include<windows.h>
#include<fstream>
#include<cmath>
using namespace std;
 
struct my_point
{
    int x;
    int y;
    int z;
};
 
int GetPoint( my_point *& , const char* );
double Distance( my_point* , my_point , int );
 
int main()
{
    int k;
    my_point* p;
    k = GetPoint(p,"Output.txt");
 
    double MaxSumLong=0, Dl;
    for(int i=0; i<k; i++)
    {
        Dl=Distance(p,p[i],k);
        if(Dl >  MaxSumLong)
             MaxSumLong=Dl;
    }
    cout<<"Max long "<<MaxSumLong<<endl;
    system("pause");
 
}
 
 
int GetPoint(my_point*& pArrayPpoint, const char* FileName)
{
    fstream File(FileName, ios::in);
    int k;
    File>>k;
    pArrayPpoint = new my_point [k];
    for(int i=0; i<k; i++)
    {
        File>>pArrayPpoint[i].x>>pArrayPpoint[i].y>>pArrayPpoint[i].z;
    }
    return k;
}
 
 double Distance( my_point* pArrayPpoint,my_point pl, int k)
{
    double SumDistance=0;
    for(int i=0; i<k; i++)
        SumDistance += sqrt(  pow( (double) pl.x -pArrayPpoint[i].x, 2) + pow( (double) pl.y-pArrayPpoint[i].y, 2) +  pow( (double) pl.z-pArrayPpoint[i].z, 2)  );
    return SumDistance;
}
Не забудь создать файл Output.txt в котором первое число это количество точек, а дальше их координаты.
qloaqa
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 7
20.12.2011, 00:01  [ТС]     Найти точку на плоскости, сумма расстояний от которой до остальных точек множества максимальна #4
Замечательно. Огромная благодарность вам :dance3:
Almiqui
20.12.2011, 00:07     Найти точку на плоскости, сумма расстояний от которой до остальных точек множества максимальна
  #5
 Комментарий модератора 
Цитата Сообщение от iomanip Посмотреть сообщение
К слову почему-то не могу зайти как qloaqa.
Я так понимаю, что смогли войти. Клона забаню.
Yandex
Объявления
20.12.2011, 00:07     Найти точку на плоскости, сумма расстояний от которой до остальных точек множества максимальна
Ответ Создать тему
Опции темы

Текущее время: 09:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru