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

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

Войти
Регистрация
Восстановить пароль
 
natasha)))
Сообщений: n/a
#1

Практическая работа по классам - C++

17.01.2012, 22:47. Просмотров 519. Ответов 4
Метки нет (Все метки)

Построить систему классов для описания плоских геометрических фигур: круг, квадрат, треугольник. Предусмотреть методы для создания объектов, перемещение на плоскости, изменения размеров и вращения на заданный угол.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2012, 22:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Практическая работа по классам (C++):

практическая работа ( перегрузка функций) - C++
Реализовать сортировку пузырьком для целых чисел, а затем перегрузить её для дробных

Научно-практическая конференция - C++
Ребят меня оправили на конференцию не спросив хочу ли я этого - кроме дипломки еще один гемор вылезет... Тему хоть дали "Применение...

Triple DES-EDE3 практическая реазизация - C++
Прошу помощи аудитории этого уважаемого форума и форумчан... Мне требуется код процедуры шифрования Triple DES, 192 бит (24 байт). то есть...

Вопрос по классам - C++
Есть такой код #include <iostream> class C1{ public: C1(){std::cout <<" 1 is open"<<std::endl;}; ~C1(){std::cout <<" 1...

лабораторная по классам - C++
Доброго вечера ув. гуру. Очень прошу вас помочь написать небольшую программу, связанной с великим ООП, а конкретнее работой с классами....

от структур к классам - C++
Добрый вечер. Помогите пожалуйста разобраться в классах, только начал их изучать. Есть задание переделать структуру в класс ну и сделать...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
retmas
Жарю без масла
859 / 741 / 164
Регистрация: 13.01.2012
Сообщений: 1,694
17.01.2012, 22:51 #2
самостоятельно пробовали? что не получается?
natasha)))
Сообщений: n/a
17.01.2012, 22:52 #3
побывала
только ничего не получается
плохо поняла эту тему
retmas
Жарю без масла
859 / 741 / 164
Регистрация: 13.01.2012
Сообщений: 1,694
17.01.2012, 23:04 #4
нужно создать абстрактный класс - базовый для всех фигур, объявить в нем ф-ии (чисто виртуальные), которые будут унаследованы и определены в производных классах - фигурах

Добавлено через 6 минут
что из этого не получается?
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
18.01.2012, 15:19 #5
Давайте помогу с парой классов.
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
116
117
118
119
120
121
122
123
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
 
// pure virtual
class Figure {
 public:
  virtual ~Figure() {
    std::cout << "Deleting figure." << std::endl;
  }
  virtual void rotate(float angle) = 0;
  virtual void shift(float x, float y) = 0;
  virtual void scale(float n) = 0;
  virtual std::string toString() = 0;
};
 
struct Point {
  float x, y;
  Point() : x(0.), y(0.) {}
  Point(float x_, float y_) : x(x_), y(y_) {}
  std::string toString() {
    std::stringstream result;
    result << "[" << x << ", " << y << "]";
    return result.str();
  }
};
 
// circle
class Circle : public Figure {
 public:
  Circle() : center_(), radius_(0.) {}
  Circle(const Point &center, float radius)
    : center_(center), radius_(radius) {}
  const Point &getCenter() const { return center_; }
  float getRadius() const { return radius_; }
  virtual void rotate(float angle) {
    // вращать круг как-то не имеет смысла
  }
  virtual void shift(float x, float y) {
    center_.x += x;
    center_.y += y;
  }
  virtual void scale(float n) {
    radius_ *= n;
  }
  virtual std::string toString() {
    std::stringstream result;;
    result << "Circle: center: " << center_.toString() << ", radius " <<
      radius_;
    return result.str();
  }
 private:
  Point center_;
  float radius_;
};
 
class Triangle : public Figure {
 public:
  Triangle() : a_(), b_(), c_() {}
  Triangle(const Point &a, const Point &b, const Point &c)
    : a_(a), b_(b), c_(c) {}
  const Point &getPointA() const { return a_; }
  const Point &getPointB() const { return b_; }
  const Point &getPointC() const { return c_; }
  virtual void rotate(float angle) {
    // надо вычислять центр, пересчитывать координаты точек
    // лень
  }
  virtual void shift(float x, float y) {
    a_.x += x;
    a_.y += y;
    b_.x += x;
    b_.y += y;
    c_.x += x;
    c_.y += y;
  }
  virtual void scale(float n) {
    // надо вычислять центр, пересчитывать координаты точек
    // лень
  }
  virtual std::string toString() {
    std::stringstream result;;
    result << "Triangle: a: " << a_.toString() <<
      ", b: " << b_.toString() << ", c: " << c_.toString();
    return result.str();
  }
 private:
  Point a_, b_, c_;
};
 
// класс для создания фигур
class FigureFactory {
 public:
  FigureFactory() : figures_() {}
  // созданные фигуры удалятся при удалении класса
  virtual ~FigureFactory() {
    for (std::vector<Figure*>::iterator i = figures_.begin();
      i != figures_.end(); ++i)
      delete *i;
  }
  Circle *createCircle(const Point &point, float radius) {
    Circle *figure = new Circle(point, radius);
    figures_.push_back(figure);
    return figure;
  }
  Triangle *createTriangle(const Point &a, const Point &b, const Point &c) {
    Triangle *figure = new Triangle(a, b, c);
    figures_.push_back(figure);
    return figure;
  }
 private:
  std::vector<Figure*> figures_;
};
 
int main(int argc, char *argv[]) {
  FigureFactory factory;
  Figure *circle = factory.createCircle(Point(0, 0), 10);
  std::cout << circle->toString() << std::endl;
  Figure *triangle = factory.createTriangle(Point(0, 0), Point(0, 1), Point(1, 0));
  std::cout << triangle->toString() << std::endl;
  return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2012, 15:19
Привет! Вот еще темы с ответами:

Вопрос по Классам... - C++
#include &lt;iostream&gt; using std::cout; using std::endl; class GradeBook { public: void displayMessage()

Задача по классам.с++ - C++
Задание 1 Разработать пользовательский тип (класс) «матрица целых чисел». Класс должен содержать: – все нужные поля, исходя из...

Лабораторные по классам - C++
С абсолютно не знаю, поэтому пришел сюда за помощью. Лабораторная 1 Описать базовый класс «Элемент». Поля: - имя элемента...

Вопрос по классам - C++
Вообщем есть два класса, TTriangular и TPoint. В TTriangular есть метод, который должен вводить координаты заданной точки. В TPoint...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.01.2012, 15:19
Ответ Создать тему
Опции темы

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