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

Из N треугольников, заданных координатами своих вершин, имеет больший периметр? - C++

Восстановить пароль Регистрация
 
иванец
Сообщений: n/a
21.12.2013, 01:51     Из N треугольников, заданных координатами своих вершин, имеет больший периметр? #1
Из N треугольников, заданных координатами своих вершин, имеет больший периметр?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2013, 01:51     Из N треугольников, заданных координатами своих вершин, имеет больший периметр?
Посмотрите здесь:

C++ Написать программу, вычисляющую периметр треугольника, заданного координатами вершин.
Треугольник задан координатами своих вершин. Найти его периметр и площадь. C++
C++ Треугольник задан координатами своих вершин. Найти его периметр и площадь
Определить периметры треугольников, заданных координатами их вершин C++
C++ какой из N треугольников, заданных координатами своих вершин, имеет больший периметр?
C++ Треугольник задается координатами своих вершин. С++
C++ Найти площадь треугольника заданного координатами своих вершин
C++ Треугольник задан координатами своих вершин. Найти (выдает ошибку)

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,397
21.12.2013, 03:01     Из N треугольников, заданных координатами своих вершин, имеет больший периметр? #2
Колбаса, сосика, имеет цена?
lemegeton
 Аватар для lemegeton
2908 / 1337 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
21.12.2013, 13:59     Из N треугольников, заданных координатами своих вершин, имеет больший периметр? #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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include <cmath>
#include <ctime>
#include <cstdlib>
#include <iostream>
#include <iomanip>
 
class Point {
 private:
  double x;
  double y;
 public:
  Point() : x(), y() {}
  Point(const double &x, const double &y) : x(x), y(y) {}
  const double &getX() const { return x; }
  const double &getY() const { return y; }
  double getDistanceTo(const Point &other) const {
    return std::sqrt(std::pow(getX() - other.getX(), 2.) + 
      std::pow(getY() - other.getY(), 2.));
  }
};
 
std::ostream &operator<<(std::ostream &stream, const Point &p) {
  return stream << "Point{" <<
    std::fixed << std::setprecision(3) <<
    "x = " << p.getX() <<
    ", y = " << p.getY() <<
    "}";
}
 
class Triangle {
 private:
  Point a;
  Point b;
  Point c;
 public:
  Triangle() : a(), b(), c() {}
  Triangle(const Point &a, const Point &b, const Point &c)
    : a(a), b(b), c(c) {}
  const Point &getA() const { return a; }
  const Point &getB() const { return b; }
  const Point &getC() const { return c; }
  double getPerimeter() const {
    return getA().getDistanceTo(getB()) + getB().getDistanceTo(getC()) +
      getC().getDistanceTo(getA());
  }
  static Triangle createRandom() {
    return Triangle(
      Point((rand() % 10000) / 1000., (rand() % 10000) / 1000.),
      Point((rand() % 10000) / 1000., (rand() % 10000) / 1000.),
      Point((rand() % 10000) / 1000., (rand() % 10000) / 1000.));
  }
};
 
std::ostream &operator<<(std::ostream &stream, const Triangle &t) {
  return stream << "Triangle{" <<
    std::fixed << std::setprecision(3) <<
    "a = " << t.getA() <<
    ", b = " << t.getB() <<
    ", c = " << t.getC() <<
    "}";
}
 
bool compareByPerimeter(const Triangle &a, const Triangle &b) {
  return a.getPerimeter() < b.getPerimeter();
}
 
template <class OutputIterator, class Size, class Generator>
void generate(OutputIterator first, Size n, Generator gen) {
  while (n>0) {
    *first = gen();
    ++first; --n;
  }
}
 
template <class ForwardIterator, class Compare>
ForwardIterator getMax(ForwardIterator first, ForwardIterator last, 
  Compare compare) {
  if (first==last) { 
    return last;
  }
  ForwardIterator largest = first;
 
  while (++first!=last) {
    if (compare(*largest, *first)) {
      largest=first;
    }
  }
  return largest;
}
 
int main(int, char**) {
  srand(time((time_t*)0));
 
  int numberOfTriangles = 5 + rand() % 5;
  Triangle triangles[numberOfTriangles];
 
  generate(triangles, numberOfTriangles, Triangle::createRandom);
  
  for (int i = 0; i < numberOfTriangles; ++i) {
    std::cout << triangles[i] << std::endl;
  }
 
  Triangle *largest = getMax(triangles, triangles + numberOfTriangles,
    compareByPerimeter);
  std::cout << "Largest by perimeter: " << *largest << 
    ", perimeter = " << largest->getPerimeter() << std::endl;
 
  return 0;
}
Yandex
Объявления
21.12.2013, 13:59     Из N треугольников, заданных координатами своих вершин, имеет больший периметр?
Ответ Создать тему
Опции темы

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