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

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

Войти
Регистрация
Восстановить пароль
 
lese4ka
0 / 0 / 0
Регистрация: 19.02.2012
Сообщений: 6
#1

С++, найти искомую точку, используя структуру - C++

19.02.2012, 23:35. Просмотров 532. Ответов 2
Метки нет (Все метки)

Прошу помощи с задачей:
Найти такую точку, сумма расстояний от которой до остальных точек множества максимальна. Множество точек задано в пространстве.

По условию, задачу нужно решить, используя структуру point (для хранения координат точки)

Добавлено через 2 часа 11 минут
*******

Добавлено через 2 часа 19 минут
******
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2012, 23:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос С++, найти искомую точку, используя структуру (C++):

Разделить число на составляющие и найти искомую цифру - C++
Программа, которая разделяет число на состовляющие и находит искомую цифру, вот, то, что получилось: # include <stdio.h> void...

Найти точку D, симметричную точку A относительно стороны BC. - C++
помогите решить пожалуйста...

Используя структуру "People" найти номер курса, на котором наибольшее количество мужчин - C++
Входной файл хранит следующую информацию по студентам: <Фамилия>, <имя>, <отчество>, <год рождения>, <курс>, <пол>, причем фамилия, имя...

Создайте структуру,описывающую точку в трехмерной системе координат - C++
Создайте структуру,описывающую точку в трехмерной системе координат (x,y,z). Найдите расстояние между точками A и В.

Заполнить массив-структуру используя цикл - C++
Здравствуйте.Задача: заполнить структуру значениями #include <stdio.h> #include <conio.h> #include "stdafx.h" #include...

Создать динамическую записную книжку, используя структуру - C++
Создать динамическую записную книжку, используя структуру struct book{ char name; char phone; book *next; };

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MrCold
854 / 752 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
20.02.2012, 00:21 #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
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
73
74
75
76
77
78
79
80
#include <iostream>
#include <math.h>
using namespace std; 
 
    struct Point{
    double x;
    double y;
    double z;
    double sum;};
 
void Set(Point *point,int N){
 
    for (int i = 0; i < N; ++i) 
 
  { cout << i + 1 << " point: x = ";
 
        cin >> point[i].x; 
 
  cout <<  i + 1 << " point: y = ";
 
        cin >> point[i].y; 
 
  cout <<  i + 1 << " point: z = ";
 
        cin >> point[i].z; 
  } }
 
void Dist(Point *point,int N, int j){
 
    point[j].sum = 0;
 
    for (int i = 0; i < N; ++i) 
 
  { point[j].sum += abs(sqrt(pow(point[i].x - point[j].x,2) + pow(point[i].y - point[j].y,2) + pow(point[i].z - point[j].z,2)));
 
  } }
 
void Max_sum(Point *point,int N, int j){
 
    int num = 0;
 
    double max = 1;
 
    double dist = 0;
 
    for (int j = 0; j < N; ++j) 
  { 
     if (point[j].sum  > max){ max = point[j].sum ;
 
      num = j;}
  } 
cout << "Point's number " << num + 1 << " has max sum " << max ; }
 
    int main() {
 
        int N, j;
 
        Point *point;
 
        cout << "How much points ? Input N ";   cin >> N;
 
        point = new Point[N];
 
        cout << "Input   x, y, z of points\n"; 
 
  Set(point, N);
  
  for ( j = 0; j < N; ++j) {
 
      Dist(point, N, j);
     }
  Max_sum(point, N, j);
 
  cout << endl;
 
  delete[] point;
 
  system("pause");
 
  return 0; }
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
20.02.2012, 10:04 #3
Альтернативное решение.
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
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <ctime>
 
struct Point {
  float x, y, z;
  // для простоты конструктор по-умолчанию генерирует рандомную точку
  Point() : x(rand() % 1000 / 10.), y(rand() % 1000 / 10.),
    z(rand() % 1000 / 10.) {}
  Point(float x_, float y_, float z_) : x(x_), y(y_), z(z_) {}
  float distanceTo(const Point &other) {
    return sqrt(pow(x - other.x, 2.) + pow(y - other.y, 2.) +
      pow(z - other.z, 2.));
  }
};
 
std::ostream &operator<<(std::ostream &stream, const Point &point) {
  return stream << "[" << point.x << ", " << point.y << ", " << point.z << "]";
}
 
float sumOfDistances(Point *point, Point *first, Point *last) {
  float result = 0.;
  for (; first != last; ++first)
    if (first != point)
      result += point->distanceTo(*first);
  return result;
}
 
Point *findMaxSumOfDistances(Point *first, Point *last) {
  Point *maxPoint = first;
  float maxDistance = sumOfDistances(first, first, last);
  for (Point *point = first; point != last; ++point) {
    float currentSumOfDistances = sumOfDistances(point, first, last);
    if (currentSumOfDistances > maxDistance) {
      maxPoint = point;
      maxDistance = currentSumOfDistances;
    }
  }
  return maxPoint;
};
 
int main(int argc, char *argv[]) {
  srand(time(NULL));
  Point points[10];
  size_t numberOfPoints = sizeof(points) / sizeof(Point);
  
  std::cout << "All points: ";
  for (Point *point = points; point != points + numberOfPoints; ++point)
    std::cout << *point << " ";
  std::cout << std::endl << std::endl;
 
  std::cout << "Point with maximum sum of distances: "
    << *(findMaxSumOfDistances(points, points + numberOfPoints)) << std::endl;
  
  return 0;
};
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.02.2012, 10:04
Привет! Вот еще темы с ответами:

Чтение из файла в список (двунаправленный), используя структуру - C++
Добрый день, немного запутался со списками, и файлом... Будьте добры, помогите разобраться. Есть файл, считываю информацию в список, а...

Создать структуру, используя потоки заполнить масив структурами и отсортировать - C++
Помогите, никак не могу закончить програму. Как через поток записать существующие (записаные в файле данные) в масив? #include &lt;...

Используя динамическую структуру список, подсчитать сумму отрицательных чисел в списке - C++
Здравствуйте! Возникли затруднения в работе со списками.Задание следующее: Используя динамическую структуру список, подсчитать сумму...

Используя структуру для определения понятия студент, распечатать фамилии и имена отличников. - C++
14. Используя структуру для определения понятия студент (состоящую из полей ФИО, курс, группа, оценки в сессию) распечатать фамилии и имена...


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

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

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