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

Немного подправить код с наследованием (С++) - C++

Восстановить пароль Регистрация
 
Johnlion
 Аватар для Johnlion
62 / 2 / 0
Регистрация: 11.05.2011
Сообщений: 666
01.04.2012, 13:37     Немного подправить код с наследованием (С++) #1
.cpp файл
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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
#include "5header.h"
 
Point :: Point (float iX, float iY)
{
    x=iX;
    y=iY;
};
 
float Point :: GetX()
{
    return x;
};
 
float Point :: GetY()
{
    return y;
};
 
Point :: ~Point(){};
 
Circle C0, C1;
 
void Circle :: Active()
{
    cout << "Vvedite radius C0";
    cin >> C0.Radius;
    cout << "Vvedite radius C1";
    cin >> C1.Radius;
    while (C0.Radius <= 0 || C1.Radius <= 0)
    {
        cout << "Vvedite radius C0";
        cin >> C0.Radius;
        cout << "Vvedite radius C1";
        cin >> C1.Radius;
    };
    cout << "Vvedite X0";
    cin >> C0.x;
    cout << "Vvedite Y0";
    cin >> C0.y;
    cout << "Vvedite X1";
    cin >> C1.x;
    cout << "Vvedite Y1";
    cin >> C1.y;
 
    float distance = sqrt ( (C0.x-C1.x)*(C0.x-C1.x) + (C0.y-C1.y)*(C0.y-C1.y) );
    if ( distance + C0.Radius < C1.Radius )
        cout << "C0 lezhit v seredine C1";
    else
        cout << "C0 ne lezhit v seredine C1";
};
5header.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Point
{
protected: float x, y;
public: Point (float iX, float iY);
        float GetX();
        float GetY();
        ~Point();
};
 
class Circle: public Point
{
private: float Radius;
public: 
        // функции-члены класса
 
        Circle ();
        ~Circle();
 
        // Action-методы
 
        void Active();
};
Суть в том, что есть класс точка, от него нужно унаследовать класс окружность (а окружности у нас две будет). Делаю два объекта такой окружности и с ними работаю. Пожалуйста, подскажите, как подправить код, чтобы убрать все лишнее и программа работала? Например, в классе Point нужны ли Get-методы, локальные переменные iX, iY. Может Set-методы добавить? Как по минимуму тут подкорректировать, чтобы все работало?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2012, 13:37     Немного подправить код с наследованием (С++)
Посмотрите здесь:

Немного подправить. C++
C++ вы немогли бы немного подправить
Немного подправить код C++
Подправить код C++
Подправить код C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
01.04.2012, 13:49     Немного подправить код с наследованием (С++) #2
Цитата Сообщение от Johnlion Посмотреть сообщение
Суть в том, что есть класс точка, от него нужно унаследовать класс окружность
Это задание такое? Имхо, не очень. Я бы сделал класс Circle, в котором будет объект Point и радиус.
Johnlion
 Аватар для Johnlion
62 / 2 / 0
Регистрация: 11.05.2011
Сообщений: 666
01.04.2012, 13:55  [ТС]     Немного подправить код с наследованием (С++) #3
soon, по заданию нужно создать класс "точка". Обязательно должны быть объекты в программе. Вот. А как дальше реализовать, то это я выбрал так, что класс окружность и два объекта. Может, как-то лучше можно сделать? Или как этот код подправить?
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,560
Записей в блоге: 17
01.04.2012, 14:23     Немного подправить код с наследованием (С++) #4
Ну если конкретно этот пример, то методы GetX(), GetY() не нужны так как нет необходимости контролировать и ограничивать чтение/запись полей X,Y достаточно просто сделать их public.
Здесь GetX(), GetY() стоит вводить лишь для поддержания стиля
(т.е если препод приводил примеры с их использованием, то стоит все таки использовать, а то придерется);
Кстати у вас нет методов GetRadius(),SetRadius() во втором классе -нет возможности устанавливать радиус, в конструкторе как параметра его тоже не вижу

Добавлено через 2 минуты
Можно изменить так
C++
1
2
3
4
5
Point :: Point (float x, float y)
{
    this->x=x;
    this->y=y;
}
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
01.04.2012, 14:25     Немного подправить код с наследованием (С++) #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
#include <iostream>
 
class Point
{
    double _x;
    double _y;
 
public:
    Point(const double& x = 0., const double& y = 0.): _x(x), _y(y)
    {
 
    }
 
    friend std::ostream& operator << (std::ostream& stream, Point& point)
    {
        stream << "(" << point._x << ", " << point._y << ")";
        return stream;
    }
};
 
class Circle
{
    Point _p;
    double _r;
 
public:
    Circle(const Point& p = Point(), const double& r = 0.): _p(p), _r(r)
    {
 
    }
 
    friend std::ostream& operator << (std::ostream& stream, Circle& c)
    {
        stream << c._p << ", r - " << c._r;
        return stream;
    }
};
 
int main()
{
    Point p(1.);
    std::cout << p << std::endl;
    Circle c(p, 8.);
    std::cout << c << std::endl;
    return 0;
}
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,560
Записей в блоге: 17
01.04.2012, 14:25     Немного подправить код с наследованием (С++) #6
Или так
C++
1
Point :: Point (float iX, float iY):x(iX),y(iY){};
Yandex
Объявления
01.04.2012, 14:25     Немного подправить код с наследованием (С++)
Ответ Создать тему
Опции темы

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