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

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

Восстановить пароль Регистрация
 
FORZE
1 / 1 / 0
Регистрация: 10.09.2012
Сообщений: 21
31.05.2013, 23:41     Найти пару точек расстояние между которыми максимально(Исправить программу ) #1
В трехмерном пространстве заданы координаты n точек составить программу определяющую пару точек расстояние между которыми максимально
Сама программа есть но нужно ее изменить под dev-c++ и сделать как можно проше (чтобы можно было ее объяснить )
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
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <iomanip>
#include <iostream>
 
struct Point {
  double x, y, z;
  Point() : x(0), y(0), z(0) {}
  Point(double x, double y, double z) : x(x), y(y), z(z) {}
};
 
std::ostream &operator<<(std::ostream &stream, const Point &p) {
  return stream << "[" << std::fixed << std::setprecision(3) <<
    p.x << "; " << p.y << "; " << p.z << "]";
}
 
struct PointPair {
  Point a, b;
  PointPair(const Point &a, const Point &b) : a(a), b(b) {}
};
 
double getDistance(const Point &a, const Point &b) {
  return sqrt(pow(a.x - b.x, 2.) + pow(a.y- b.y, 2.) + pow(a.z - b.z, 2.));
}
 
PointPair getTwoFarmostPoints(Point *first, Point *last) {
  Point *maxA = first, *maxB = maxA + 1;
  double maxDistance = getDistance(*maxA, *maxB);
  
  for (Point *i = first; i != last - 1; ++i) {
    for (Point *j = i + 1; j != last; ++j) {
      double distance = getDistance(*i, *j);
      if (distance > maxDistance) {
        maxA = i;
        maxB = j;
        maxDistance = distance;
      }
    }
  }
  
  return PointPair(*maxA, *maxB);
}
 
Point getRandomPoint() {
  return Point((rand() % 1000) / 100., (rand() % 1000) / 100.,
    (rand() % 1000) / 100.);
}
 
int main(int, char**) {
  srand(time(0));
  
  const int numberOfPoints = 15 + rand() % 6;
  Point points[numberOfPoints];
  
  for (int i = 0; i < numberOfPoints; ++i) {
    std::cout << (points[i] = getRandomPoint()) << std::endl;
  }
 
  PointPair farMost = getTwoFarmostPoints(points, points + numberOfPoints);
  std::cout << "Farest are " << farMost.a << " and " << farMost.b << std::endl;
 
  return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2013, 23:41     Найти пару точек расстояние между которыми максимально(Исправить программу )
Посмотрите здесь:

Найти все пары параллельных прямых,расстояние между которыми принадлежит заданному интервалу C++
C++ Составить программу определяющую между какими из пар точек самое большое расстояние
составить программу определяющую пару точек расстояние между которыми максимально C++
Задача по физике (Определить силу притяжения между телами массы m1 и m2, расстояние между которыми r) C++
C++ Найти номера пары точек, расстояние между которыми наибольшее (считать, что такая пара единственная).
C++ Среди заданных точек на плоскости найти ту, у которой расстояние суммы равно наибольшему от остальных точек
C++ Найти номера пары точек, расстояние между которыми максимально (Паскаль -> С++)
Функция, которая вернет номера двух из трех заданных точек на плоскости, расстояние между которыми минимально C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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