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

Классы точка, круг, элипс - C++

Восстановить пароль Регистрация
 
Serg22
 Аватар для Serg22
102 / 102 / 31
Регистрация: 04.03.2013
Сообщений: 479
Завершенные тесты: 2
03.11.2013, 23:25     Классы точка, круг, элипс #1
Добрый вечер)
начну с задания: Создать класс точка, имеющая координаты. Класс эллипсов, и класс кругов. Определить иерархию типов. Определить функции печати, конструкторы, деструкторы, вычисление площади.
Вот что вышло у меня.
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
#include <iostream>
 
using namespace std;
class Point{
      
      public:
             
      Point(): x(0),y(0) {};
      Point(double X, double Y): x(X), y(Y){};
      ~Point(){}
      double get_x(){return x;}
      double get_y(){return y;}
      
      private:
              
      double x,y;
      };
 
class Circle //Cirle area: S=PI*R*R
{
   
public:
    Circle(double radius = 1.0):_radius(radius) {};
    ~Circle(){}
 double get_radius() const {   return _radius; }
 double area() const{ return PI * _radius * _radius;}
 
 
private:
    double _radius;
   static const double PI=3.14;
};
 
class Elipse // Elipse area: S=PI*A*B
{
      public: 
              Elipse(): a(0),b(0) {};
              Elipse(double A, double B): a(A), b(B) {}; 
             ~Elipse() {}
             double get_A() const {return a;}
             double get_B() const {return b;}
      double area() const {return PI * a * b;}
      
      private:
              double a,b;
                static const double PI=3.14;
};
int main(){
    Circle a(10);
    Elipse b(3,4);
        cout<<"\nCIRCLE\n"<<"Radius="<<a.get_radius()<<"\nArea of circle="<<a.area()<<endl;
    cout<<"\nELIPSE\n"<<"A="<<b.get_A()<<"\nB="<<b.get_B()<<"\narea of elipse="<<b.area()<<endl;
    system("pause");}
Вопрос1 : правильно ли я понял задание? (просто при чем тут тогда класс Точка, если его мы не используем..
Вопрос2: Определить иерархию типов... Это как?..
Вопрос3: помогите, пожалуйста, написать ф-цию печати Print (пробывал разными способами реализовать ее в классе, не получается

Добавлено через 57 минут
ап)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2013, 23:25     Классы точка, круг, элипс
Посмотрите здесь:

Определить, попадает ли точка в круг. C++
C++ Построить классы для описания плоских фигур:круг,квадрат,прямоугольник
Дана точка М(x, y). Присвоить z = 1, если точка принадлежит окружности с радиусом R и центром в точке (a, b) и z = 0 в противном случае. C++
Создать производные классы: Rectangle (прямоугольник), Circle (круг), Triangle (треугольник) со своими методами вычисления площади и периметра C++
Наследование классов: реализовать классы точка, линия, треугольник, круг C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
03.11.2013, 23:26     Классы точка, круг, элипс #2
Serg22, я так понимаю, что тут нужно было создать точку, потом на основе точки сделать класс круг (точка будет центром), и на основе точки эллипс (две точки для отрисовки)
Ну и, когда я выполнял подобную работу, я пользовался С++ Builder и его функциями canvas (для отрисовки)
Serg22
 Аватар для Serg22
102 / 102 / 31
Регистрация: 04.03.2013
Сообщений: 479
Завершенные тесты: 2
03.11.2013, 23:33  [ТС]     Классы точка, круг, элипс #3
хмм) а как это реализовать в Dev-C++?..
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
03.11.2013, 23:57     Классы точка, круг, элипс #4
Serg22, ну примерно так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class type_point
{
public:
    type_point(int tx, int ty){_x=tx;_y=ty;}
    int x() {return _x;}
    int y() {return _y;}
    void set_x(int t) {_x=t;}
    void set_y(int t) {_y=t;}
private:
    int _x,_y;
};
 
class type_circle
{
public:
private:
    type_point center;
    int r;
}
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,048
04.11.2013, 00:04     Классы точка, круг, элипс #5
Цитата Сообщение от Folko Посмотреть сообщение
Serg22, я так понимаю, что тут нужно было создать точку, потом на основе точки сделать класс круг
что общего у круга и точки
притянуто за уши
круг может содержать класс точки в виде члена класса, координаты центра
а вот круг из эллипса можно
круг это частный случай эллипса, центры совпадают

Добавлено через 1 минуту
Folko, причем сам так и сделал
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
04.11.2013, 00:05     Классы точка, круг, элипс #6
ValeryS, а что не так?
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,048
04.11.2013, 00:07     Классы точка, круг, элипс #7
Цитата Сообщение от Folko Посмотреть сообщение
ValeryS, а что не так?
все так
но ты рекомендовал наследовать класс круг от класса точки
Цитата Сообщение от Folko Посмотреть сообщение
к понимаю, что тут нужно было создать точку, потом на основе точки сделать класс круг
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
04.11.2013, 00:09     Классы точка, круг, элипс #8
ValeryS, не не, я имел в виду включить в состав класса круг точку. Но можно и от класса точки сделать класс круг... Смотря что требуется по заданию
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,048
04.11.2013, 00:11     Классы точка, круг, элипс #9
Цитата Сообщение от Folko Посмотреть сообщение
Но можно и от класса точки сделать класс круг...
вот это как раз и глупость
сделать то можно но что у них общего?
Цитата Сообщение от ValeryS Посмотреть сообщение
притянуто за уши
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
04.11.2013, 00:13     Классы точка, круг, элипс #10
ValeryS, ну как вариант... у точки x,y, у круга x,y,r. Что то схожее можно найти.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,048
04.11.2013, 00:17     Классы точка, круг, элипс #11
Цитата Сообщение от Folko Посмотреть сообщение
ValeryS, ну как вариант... у точки x,y, у круга x,y,r. Что то схожее можно найти.
а я тебе могу сказать наоборот
точка это частный случай круга с радиусом 0
тут как то проходила тема
человек создал фигуру(не помню какую) от точки плюс еще были точки как члены, а потом получил глюки при вызове конструктора
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
04.11.2013, 00:23     Классы точка, круг, элипс #12
ValeryS, не спорю, может быть и так)
Serg22
 Аватар для Serg22
102 / 102 / 31
Регистрация: 04.03.2013
Сообщений: 479
Завершенные тесты: 2
04.11.2013, 22:47  [ТС]     Классы точка, круг, элипс #13
эмм, так что мне это даст?) если я допишу в классе Circle
C++
1
2
3
private:
Point center;
....
Какой здесь смысл заложен?
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
04.11.2013, 22:57     Классы точка, круг, элипс #14
так что мне это даст?)
при создании обекта круга будешь передавать координаты для точки котрая выступает центром круга, инициализируешь обьект класса точки в конструкторе класса круга.

Добавлено через 2 минуты
Но помоему лучше использовать абстрактный класс
C++
1
2
3
4
class Figure{}; // сделать абстрактным
class Point : public Figure{};
class Elipse : public Figure{};
class Circle : public Figure{};
Serg22
 Аватар для Serg22
102 / 102 / 31
Регистрация: 04.03.2013
Сообщений: 479
Завершенные тесты: 2
04.11.2013, 23:23  [ТС]     Классы точка, круг, элипс #15
а что мне нужно обьявлять в классе Figure?
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
05.11.2013, 00:05     Классы точка, круг, элипс #16
а что мне нужно обьявлять в классе Figure?
Ну хотя бы как то так
C++
1
2
3
4
5
6
7
8
9
class Figure
{
   protected:
            int x,y;
   public:
           Figure(int _x,int _y) : x(_x),y(_y) {}
           virtual void print()=0;
           virtual void move()=0;
};
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2013, 21:51     Классы точка, круг, элипс
Еще ссылки по теме:

Дружественные классы эллипс и круг C++
C++ Определить попадет ли точка в круг?
C++ Создать классы для форм (круг и треугольник)

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

Или воспользуйтесь поиском по форуму:
Serg22
 Аватар для Serg22
102 / 102 / 31
Регистрация: 04.03.2013
Сообщений: 479
Завершенные тесты: 2
05.11.2013, 21:51  [ТС]     Классы точка, круг, элипс #17
У меня получилось так) я ошибок не вижу, но программа при запуске виснет Компилятор об ошибках молчит.
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
#include <iostream>
 
using namespace std;
 
class Point {
      
      public:
             
        virtual void print()=0;
           virtual void area()=0;
      
      };
 
class Circle: public Point //Cirle area: S=PI*R*R
{
   
public:
    Circle(double radius = 1.0):_radius(radius) {};
    ~Circle(){}
 double get_radius() const {   return _radius; }
 virtual double area() const{ return PI * _radius * _radius;}
 
 
private:
    double _radius;
   static const double PI=3.14;
};
 
class Elipse: public Point // Elipse area: S=PI*A*B
{
      public: 
              Elipse(): a(0),b(0) {};
              Elipse(double A, double B): a(A), b(B) {}; 
             ~Elipse() {}
             double get_A() const {return a;}
             double get_B() const {return b;}
      virtual double area() const {return PI * a * b;}
      
      private:
              double a,b;
                static const double PI=3.14;
};
int main(){
Point *shapes[5];   
shapes[0] = new Circle (3);
    shapes[1] = new Elipse (2,4);
    shapes[2] = new Cirle (2.5);
    shapes[3] = new Elipse (5,3);
    shapes[4] = new Circle (10);
 
    for (int i = 0; i < 5; ++i)
        cout << shapes[i]->area() << endl;
 
    for (int i = 0; i < 5; ++i)
        delete shapes[i];
 
    
    system("pause");}
В чем проблема?
Yandex
Объявления
05.11.2013, 21:51     Классы точка, круг, элипс
Ответ Создать тему
Опции темы

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