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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ описать структуру с именем NOTE http://www.cyberforum.ru/cpp-beginners/thread1050447.html
1.описать структуру с именем NOTE содержащую сл. поля: фамилия, имя; номер телефона; день рождения(массив из 3-х чисел) 2. написать программу выполняющую сл. действия: ввод с клавиатуры данных в...
C++ Удаление столбцов из динамической матрицы Здравствуйте, уважаемые форумчане! Возникла такая вот беда: Нужно из двумерного динамического массива удалить все столбцы, в которых есть хотя бы один нулевой элемент. В общем я понимаю принцип,... http://www.cyberforum.ru/cpp-beginners/thread1050443.html
C++ Время и структуры
(Пример из книжки) Почему переменной lt присваевается время не ссылаясь на элемент структуры? Например lt.time = time('\0'). Почему в функции time() написано '\0'? что за функция localtime()? В...
C++ Файлы
file=fopen("file.txt","r"); for( ; ; ) {if(feof(file)) break; fscanf(file,"%s",n); printf("%s ",n); } fclose(file); как сделать так, что бы считывало посимвольно?
C++ Программа - калькулятор бинарных функций http://www.cyberforum.ru/cpp-beginners/thread1050425.html
Нужно написать калькулятор бинарных Бинарные функции функций по вводимой к примеру строке A NOT B XOR C NAND D строил таблицу различных значений переменных A B C D и для каждой комбинации "0 0 1 0"...
C++ программа, которая ищет в массиве чисел симметричные участки работает не совсем правильно, не могу найти ошибку #include "stdafx.h" #include <iostream> using namespace std; void mas(int a, int n)//функция которой заполняю массив {int i; cout<<"zapolnite massiiv"<<endl; for(i=0; i<n; i++) cin>>a;... подробнее

Показать сообщение отдельно
lemegeton
2924 / 1353 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
21.12.2013, 13:59
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;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru