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

Разработать программу «Вычислитель площадей» - C++

Восстановить пароль Регистрация
 
Yanya
0 / 0 / 0
Регистрация: 19.01.2013
Сообщений: 26
23.03.2013, 16:15     Разработать программу «Вычислитель площадей» #1
помогите пожалуйста
Разработать программу «Вычислитель площадей», позволяющую вычислять площадь плоских геометрических фигур
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2013, 16:15     Разработать программу «Вычислитель площадей»
Посмотрите здесь:

Вычислитель выражений C++
C++ разработать разветвляющуюся программу
Написать программу вычисления разности площадей квадрата и круга, вписанного в него C++
Написать программу вывода площадей колец C++
C++ Разработать программу
C++ Разработать программу «Вычислитель площадей», позволяющую вычислять площадь плоских геометрических фигур
Разработать программу «Вычислитель площадей» C++
C++ Разработать алгоритм и тесты, написать и отладить программу Выполнить программу, проанализировать результат

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
23.03.2013, 21:42     Разработать программу «Вычислитель площадей» #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
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
110
111
112
113
114
115
#include <ctime>
#include <cstdlib>
#include <iostream>
#include <iomanip>
#include <cstring>
#include <cmath>
#include <vector>
 
const double PI = 3.14159265359;
 
struct Point {
  Point() : x(0), y(0) {}
  Point(const double &x, const double &y) : x(x), y(y) {}
  double getDistanceTo(const Point &point) const {
    return sqrt(pow(x - point.x, 2.0) + pow(y - point.y, 2.0));
  }
  double x, y;
};
 
std::ostream &operator<<(std::ostream &stream, const Point &point) {
  return stream << std::fixed << std::setprecision(3) << "[" <<
    point.x << "," << point.y << "]";
}
 
class Figure {
  virtual double getPerimeter() const = 0;
  virtual double getArea() const = 0;
};
 
double getTriangleArea(const double &a, const double &b, const double &c) {
  double p = (a + b + c) / 2.0;
  return sqrt(p * (p - a) * (p - b) * (p - c));
};
 
class ConvexPolygon : public Figure {
 public:
  ConvexPolygon() : points() {}
  ConvexPolygon(const std::vector<Point> &points) : points(points) {}
  ConvexPolygon &addPoint(const Point &point) {
    points.push_back(point);
    return *this;
  }
  virtual double getPerimeter() const {
    double result = 0;
    int numberOfPoints = points.size();
    for (int i = 0; i < numberOfPoints; ++i) {
      result += points[i].getDistanceTo(points[(i + 1) % numberOfPoints]);
    }
    return result;
  }
  virtual double getArea() const {
    double result = 0;
    int numberOfPoints = points.size();
    if (numberOfPoints < 3) return 0;
    for (int i = 1; i < numberOfPoints - 1; ++i) {
      result += getTriangleArea(
        points[0].getDistanceTo(points[i]),
        points[i].getDistanceTo(points[i + 1]),
        points[0].getDistanceTo(points[i + 1]));
    }
    return result;
  }
  const std::vector<Point> &getPoints() const { return points; }
 private:
  std::vector<Point> points;
};
 
std::ostream &operator<<(std::ostream &stream, const ConvexPolygon &polygon) {
  stream << "ConvexPolygon{points={";
  for (std::vector<Point>::const_iterator i = polygon.getPoints().begin();
    i != polygon.getPoints().end(); ++i) {
    stream << *i << ((i < polygon.getPoints().end() - 1) ? "," : "");
  }
  stream << "}"  << ", area=" << polygon.getArea() << ", perimeter=" <<
    polygon.getPerimeter() << "}";
  return stream;
};
 
class Circle : public Figure {
 public:
  Circle() : center(), radius(0.0) {}
  Circle(const Point &center, const double &radius) : center(center),
    radius(radius) {}
  const Point &getCenter() const { return center; }
  const double &getRadius() const { return radius; }
  virtual double getPerimeter() const {
    return 2 * PI * getRadius();
  };
  virtual double getArea() const {
    return PI * pow(getRadius(), 2.0);
  };
 private:
  Point center;
  double radius;
};
 
std::ostream &operator<<(std::ostream &stream, const Circle &circle) {
  return stream << "Circle{" << "center=" << circle.getCenter() << "," <<
    "radius=" << std::fixed << std::setprecision(3) << circle.getRadius() <<
    ", area=" << circle.getArea() << ", perimeter=" <<
    circle.getPerimeter() << "}";
};
 
int main(int argc, char **argv) {
  srand(time(0));
 
  ConvexPolygon square = ConvexPolygon().addPoint(Point(0, 0))
    .addPoint(Point(0, 1)).addPoint(Point(1, 1)).addPoint(Point(1, 0));
  Circle circle(Point(0, 0), 10);
 
  std::cout << square << std::endl << std::cout << circle << std::endl;
 
  std::cin.get();
  return 0;
}
Yandex
Объявления
23.03.2013, 21:42     Разработать программу «Вычислитель площадей»
Ответ Создать тему
Опции темы

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