Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/29: Рейтинг темы: голосов - 29, средняя оценка - 4.76
107 / 107 / 58
Регистрация: 04.03.2013
Сообщений: 479
1

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

03.11.2013, 23:25. Показов 5303. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер)
начну с задания: Создать класс точка, имеющая координаты. Класс эллипсов, и класс кругов. Определить иерархию типов. Определить функции печати, конструкторы, деструкторы, вычисление площади.
Вот что вышло у меня.
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 минут
ап)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.11.2013, 23:25
Ответы с готовыми решениями:

Наследование классов: реализовать классы точка, линия, треугольник, круг
задачка интересная,но как сделать ее-я не представляю... можете помочь..

Разработать программу с использованием наследования классов, реализующую классы: точка; линия; круг
помогите написать программу: Разработать программу с использованием наследования классов,...

Наследование. Классы "Точка - Круг - Эллипс"
Если коротко объяснять суть проблемы: Класс tEllipse наследует от tCircle метод LineMove (который...

Дружественные классы эллипс и круг
Здраствуйте, увадаемые форумчане помогите пожалуйста Задача. 1. Описать независимые классы и...

16
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
03.11.2013, 23:26 2
Serg22, я так понимаю, что тут нужно было создать точку, потом на основе точки сделать класс круг (точка будет центром), и на основе точки эллипс (две точки для отрисовки)
Ну и, когда я выполнял подобную работу, я пользовался С++ Builder и его функциями canvas (для отрисовки)
0
107 / 107 / 58
Регистрация: 04.03.2013
Сообщений: 479
03.11.2013, 23:33  [ТС] 3
хмм) а как это реализовать в Dev-C++?..
0
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 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;
}
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
04.11.2013, 00:04 5
Цитата Сообщение от Folko Посмотреть сообщение
Serg22, я так понимаю, что тут нужно было создать точку, потом на основе точки сделать класс круг
что общего у круга и точки
притянуто за уши
круг может содержать класс точки в виде члена класса, координаты центра
а вот круг из эллипса можно
круг это частный случай эллипса, центры совпадают

Добавлено через 1 минуту
Folko, причем сам так и сделал
0
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
04.11.2013, 00:05 6
ValeryS, а что не так?
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
04.11.2013, 00:07 7
Цитата Сообщение от Folko Посмотреть сообщение
ValeryS, а что не так?
все так
но ты рекомендовал наследовать класс круг от класса точки
Цитата Сообщение от Folko Посмотреть сообщение
к понимаю, что тут нужно было создать точку, потом на основе точки сделать класс круг
0
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
04.11.2013, 00:09 8
ValeryS, не не, я имел в виду включить в состав класса круг точку. Но можно и от класса точки сделать класс круг... Смотря что требуется по заданию
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
04.11.2013, 00:11 9
Цитата Сообщение от Folko Посмотреть сообщение
Но можно и от класса точки сделать класс круг...
вот это как раз и глупость
сделать то можно но что у них общего?
Цитата Сообщение от ValeryS Посмотреть сообщение
притянуто за уши
0
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
04.11.2013, 00:13 10
ValeryS, ну как вариант... у точки x,y, у круга x,y,r. Что то схожее можно найти.
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
04.11.2013, 00:17 11
Цитата Сообщение от Folko Посмотреть сообщение
ValeryS, ну как вариант... у точки x,y, у круга x,y,r. Что то схожее можно найти.
а я тебе могу сказать наоборот
точка это частный случай круга с радиусом 0
тут как то проходила тема
человек создал фигуру(не помню какую) от точки плюс еще были точки как члены, а потом получил глюки при вызове конструктора
0
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
04.11.2013, 00:23 12
ValeryS, не спорю, может быть и так)
0
107 / 107 / 58
Регистрация: 04.03.2013
Сообщений: 479
04.11.2013, 22:47  [ТС] 13
эмм, так что мне это даст?) если я допишу в классе Circle
C++
1
2
3
private:
Point center;
....
Какой здесь смысл заложен?
0
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
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{};
1
107 / 107 / 58
Регистрация: 04.03.2013
Сообщений: 479
04.11.2013, 23:23  [ТС] 15
а что мне нужно обьявлять в классе Figure?
0
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
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;
};
1
107 / 107 / 58
Регистрация: 04.03.2013
Сообщений: 479
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");}
В чем проблема?
0
05.11.2013, 21:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.11.2013, 21:51
Помогаю со студенческими работами здесь

Определить попадет ли точка в круг?
Определить,попадает ли точка M(x,y) в круг с радиусом R с центром в точке О(1,2). Значение радиуса...

Определить, попадает ли точка в круг.
Определить попадает ли точка с координатами х,у в круг радиуса r с центром в начале координат....

Создать классы для форм (круг и треугольник)
помогите кто сможет Требуется создать классы для форм (круг и треугольник), причём каждый из...

Определить, попадает ли заданная точка в круг
С клавиатуры вводятся координаты точки,также вводятся координаты центра круга и его радиус....


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru