4 / 4 / 5
Регистрация: 12.11.2016
Сообщений: 107
1

Множественное наследование. Иерархия классов

01.11.2017, 11:20. Показов 2502. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создать классы фигура, четырехугольник, квадрат и прямоугольник. Создать из них иерархию. Определить функции печати, конструкторы и деструкторы, вычисления площади и периметра.

Вот сюда дошел и в тупике. Я знаю как: найти площади и периметры, написать деструктор. Нужна помощь с х1 и у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
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
#include "stdafx.h"
#include <string> 
#include <conio.h> 
#include <iostream>
#include <math.h>
 
 
using namespace std;
 
class figura{
public:
         int  x1;
         int  y1;
 
    void show_start()
    {
        cout << "Введите стартовую 1-ую точку: " << endl;
        cout << "Введите x1: ";
        cin>>x1;
        cout << "Введите y1: ";
        cin>>y1;
        cout << endl;
 
        cout << "ВЫПОЛНЕНО"<< endl;
        cout << endl;
    };
};
 
 
class kvad :public figura{
    public:
        int  x2;
        int  y2;
        int  x3;
        int  y3;
        int  x4;
        int  y4;
        
 
        void show_kvad(){
            cout << "\tРаботаем с квадратом:"<< endl;
            cout << "Введите 4-ую точку квадрата: " << endl;
            cout << "Введите x4: ";
                cin>>x4;
            cout << "Введите y4: ";
                cin>>y4;
            cout << "ВЫПОЛНЕНО"<< endl;
            cout << endl;
 
        y1=y2;
        x1=x3;
        x2=x4;
        y3=y4;
         
        cout << "Ваш квадрат: " << endl;
                cout << "("<<x1<<";"<<y1<<")"<<"     "<<"("<<x2<<";"<<y2<<")"<<endl;
                cout << "\t ._________. " << endl;
                cout << "\t |         |" << endl;
                cout << "\t |         | " << endl;
                cout << "\t |         | " << endl;
                cout << "\t !_________! " << endl;
                cout << "("<<x3<<";"<<y3<<")"<<"     "<<"("<<x4<<";"<<y4<<")";
 
            cout << "\nВЫПОЛНЕНО"<< endl;
        };
};
 
 
 
int main()
{
    setlocale(0, "RUS");
 
 
    figura start;
    kvad four;
    start.show_start();
    four.show_kvad();
    system("pause");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.11.2017, 11:20
Ответы с готовыми решениями:

Задача на множественное наследование, иерархия классов
Создать класс хвост, имеющий в качестве параметров длину и вид(строка). Определить конструкторы и...

Абстрактный базовый класс и множественное наследование (либо иерархия классов)
Помогите пожалуйста с задачей. Кое-что написал но еще далеко не все. Все ли пока правильно? ...

Множественное наследование классов
Здравствуйте! Пытаюсь работать с наследованием, а конкретно со множественным наследованием классов....

Множественное наследование. Построение производных классов
Необходимо построить иерархию классов согласно схемы наследования. Каждый класс должен содержать...

7
8 / 8 / 10
Регистрация: 31.01.2016
Сообщений: 84
01.11.2017, 13:23 2
Здравствуйте, можете немного по конкретнее описать задачу ?
1
4 / 4 / 5
Регистрация: 12.11.2016
Сообщений: 107
02.11.2017, 06:42  [ТС] 3
Выше написанное - есть всё задание, создать иерархию классов
0
8 / 8 / 10
Регистрация: 31.01.2016
Сообщений: 84
02.11.2017, 09:48 4
Нужна помощь с х1 и у1
Что именно с ними не получается ?
1
3 / 3 / 3
Регистрация: 24.04.2017
Сообщений: 11
02.11.2017, 17:16 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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
struct Data
{
public:
    int x1;
    int y1;
    int x2;
    int y2;
};
class Figure
{
protected:
    Data points;
    int S;
    int P;
public:
    //конструктор по умолчанию
    Figure() : points({ 0, 0, 0, 0 }) {}
    Figure(Data d) : points(d) {}
    void GetData()
    {
        cout << points.x1 << " " << points.y1 << " " << points.x2 << " " << points.y2 << " ";
    }
};
 
class Quadrate : public Figure
{
public:
    Quadrate() :Figure(){}
    Quadrate(Data d) : Figure(d){}
    int Square(Data Points)
    {
        int a, b, s;
        a = abs((Points.x1 - Points.x2));
        s = a*a;
        return s;
    }
    int Perimetr(Data Points)
    {
        int a, b, p;
        a = abs((Points.x1 - Points.x2));
        p = a * 4;
        return p;
    }
private:
};
 
 
class Rectangle : public Figure
{
public:
    Rectangle() : Figure(){}
    Rectangle(Data d) : Figure(d){}
 
    int Square(Data Points)
    {
        int a, b, s;
        a = abs((Points.x1 - Points.x2));
        b = abs((Points.y1 - Points.y2));
        s = a*b;
        return s;
    }
    int Perimetr(Data Points)
    {
        int a, b, p;
        a = abs((Points.x1 - Points.x2));
        b = abs((Points.y1 - Points.y2));
        p = (a+b)*2;
        return p;
    }
};
 
 
int main(int argc, char* argv[])
{
    Data d;
    d = { 1, 1, 5, 3 };// вершины
    Quadrate f(d); 
    Rectangle r(d);
 
    f.GetData();
    r.GetData();
    int s;
    s = f.Square(d);
    cout << s;
    system("pause");
    return 0;
}
1
21 / 19 / 7
Регистрация: 14.03.2014
Сообщений: 249
02.11.2017, 17:28 6
Sawa121212, Наверно будет уместно не только для каждого класса по своему площадь и периметр считать, но и параметры конструктора по разному определять. Для четырёхугольника нужно четыре точки в вообщем случае задать, для прямоугольника две точки, а для квадрата один из углов и длину ребра.
Самый базовый класс четырёхугольник, от которого наследует прямоугольник, а от него квадрат. В классе четырехугольника опишите общие методы для всей иерархии.
1
413 / 148 / 48
Регистрация: 02.06.2016
Сообщений: 342
03.11.2017, 11:19 7
Иерархию можно сделать примерно так:
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
#include <iostream>
#include <math.h>
 
using namespace std;
 
 
class figure
{
public:
    virtual double perimetr() = 0;
    virtual double square() = 0;
};
 
class quadrilateral : public figure//Четырехугольник
{
public:
    quadrilateral(double a, double b, double c, double d): A(a), B(b), C(c), D(d)
    {
 
    }
    double perimetr()
    {
        return (A + B + C + D);
    }
 
    double square()
    {
        double P = (A + B + C + D) / 2.0; //Полупериметр
        return sqrt((P - A) * (P - B) * (P - C) * (P - D));
    }
 
private:
    double A, B, C, D;//Длина каждой стороны
};
 
class rectangle : public quadrilateral//Прямоугольник
{
public:
    rectangle(double e, double f): quadrilateral(e, f, e, f)
    {
 
    }
};
 
class square : public rectangle//Квадрат
{
public:
    square(double g): rectangle(g, g)
    {
 
    }
};
 
void printdata(figure* f)
{
    cout << f->perimetr() << " " << f->square() << endl;
}
 
int main()
{
    /*Для четырехугольника при ручном вводе
    нужно учитывать что длина любой его стороны должна
    быть меньше суммы трех других, иначе
    его невозможно построить*/
    
    quadrilateral f1(1.0, 2.0, 3.0, 4.0);
    rectangle f2 (3.0, 4.0);
    square f3 (2.0);
 
    printdata(&f1);
    printdata(&f2);
    printdata(&f3);
 
    return 0;
}
А вот что имелось ввиду в данной задаче под множественным наследованием, не понятно.
1
4 / 4 / 5
Регистрация: 12.11.2016
Сообщений: 107
05.11.2017, 14:03  [ТС] 8
Хорошо, всем спасибо
0
05.11.2017, 14:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.11.2017, 14:03
Помогаю со студенческими работами здесь

Возведение в степень (множественное наследование классов)
Добрый день. В коде реализовано возведение в степень. Я совсем запутался в классах. Не могу понять...

Множественное наследование с использованием абстрактных базовых классов
тема: Множественное наследование с использованием абстрактных базовых классов, файлового...

Иерархия классов, наследование (Млекопитающие, Парнокопытные, Птицы, Животное)
нужно создать иерархию класcов с механизмом наследования написать код я хочу написать сам , но...

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

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры таких задач, если вдруг...

Одиночное наследование, иерархия классов "Шахматная фигура"
Люди добрые помогите пожалуйста написать программу на с++. Создать иерархию классов шахматная...


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

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

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