С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Johnlion
62 / 2 / 0
Регистрация: 11.05.2011
Сообщений: 666
#1

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

01.04.2012, 13:37. Просмотров 327. Ответов 5
Метки нет (Все метки)

.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-методы добавить? Как по минимуму тут подкорректировать, чтобы все работало?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2012, 13:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Немного подправить код с наследованием (С++) (C++):

Немного подправить код - C++
Друзья, помогите, программа почему то сразу вылетает #include &lt;iostream&gt; #include &lt;exception&gt; #include &lt;stdexcept&gt; #include...

Выводит немного не то что надо ,как подправить код - C++
Всем привет, подскажите плиз как сделать так . 1)Если я ввожу числа больше 10 ,то снова надо ввести и так до бесконечности пока не введу...

подправить немного - C++
#include &lt;iostream&gt; using namespace std; int main() { int i, j, N, M; double *a,*b,*c; cout«&quot;N = &quot;; cin»N; cout«&quot;M = &quot;;...

Немного подправить. - C++
Имеется код программы. Он рабочий, но почему то при вводе данных в программу, в документе database.txt выводятся какие то символы, но ни...

вы немогли бы немного подправить - C++
#include&lt;stdio.h&gt; #include&lt;conio.h&gt; #include&lt;math.h&gt; void main() {int i,j; float a,max,s=0,k=0,sr; for (i=0;i&lt;3;i++) for...

надо немного подправить, пожалуйста - C++
вроде ведь и не сложно, но я что-то совсем не понимаю. как сделать, чтобы при вводе номера группы не цифрами, а буквами, не выдавало...

5
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
01.04.2012, 13:49 #2
Цитата Сообщение от Johnlion Посмотреть сообщение
Суть в том, что есть класс точка, от него нужно унаследовать класс окружность
Это задание такое? Имхо, не очень. Я бы сделал класс Circle, в котором будет объект Point и радиус.
1
Johnlion
62 / 2 / 0
Регистрация: 11.05.2011
Сообщений: 666
01.04.2012, 13:55  [ТС] #3
soon, по заданию нужно создать класс "точка". Обязательно должны быть объекты в программе. Вот. А как дальше реализовать, то это я выбрал так, что класс окружность и два объекта. Может, как-то лучше можно сделать? Или как этот код подправить?
0
Avazart
Эксперт С++
7262 / 5434 / 304
Регистрация: 10.12.2010
Сообщений: 24,163
Записей в блоге: 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;
}
1
soon
2542 / 1307 / 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;
}
1
Avazart
Эксперт С++
7262 / 5434 / 304
Регистрация: 10.12.2010
Сообщений: 24,163
Записей в блоге: 17
01.04.2012, 14:25 #6
Или так
C++
1
Point :: Point (float iX, float iY):x(iX),y(iY){};
1
01.04.2012, 14:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2012, 14:25
Привет! Вот еще темы с ответами:

(С++)Нужно немного подправить программу - C++
Задача такова: Дан файл, содержащий сведения о телефонах абонентов. Структура записи файла: фамилия и инициалы абонента, год установки...

Подправить код - C++
#include &lt;iostream&gt; #include &lt;locale&gt; #include &lt;ctype.h&gt; using namespace std; int main () { const int n=20; char s; int k={...

Подправить код - C++
Ввожу строку с 30 символов. Нужно вывести целое число и упорядочить за возростанием Добавлено через 39 секунд пример кода на фортран...

Подправить код - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; const int n=10; float X; double sum(); int _tmain(int argc,...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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