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

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

Войти
Регистрация
Восстановить пароль
 
KAIFAT123
0 / 0 / 0
Регистрация: 15.01.2011
Сообщений: 28
#1

Наследование классов - C++

29.01.2013, 23:35. Просмотров 915. Ответов 14
Метки нет (Все метки)

Доброго времени Вам.

я с толкнулся с неприятной проблемой делая лабораторную работу по ООП, а именно запутался(а если честно то и незнаю как). Практически все релиазовал, осталось только сделать ввод и вывод характеристик объектов и перимерт тропеции. Ниже прилогаю полное задание лабы, и архив с прогой.

Заранее всем кто откликнется респект и вечное уважение.

Создать абстрактный класс Figure. На его основе реализовать классы Rectangle (прямо-угольник), Circle (круг) и Trapeze (трапеция) с возможностью вычисления площади и периметра. Создать класс Picture, содержащий массив объектов этих клас-сов в динамической памяти. Предусмотреть возможность ввода и вывода характеристик объектов
0
Вложения
Тип файла: rar laba2.rar (2.46 Мб, 18 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2013, 23:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Наследование классов (C++):

Заменить наследование классов на наследование интерфейсов - C++
#include <iostream> #include <assert.h> using namespace std; int people_on_base = 100; int vehicles_on_base = 100; double...

Наследование классов. Копирование производных классов - C++
Здравствуйте всем, у меня такой вопрос: написал код #include "stdafx.h" class A //Создаем класс А { int mA; ...

Наследование классов - C++
Задание: Создать класс базовый класс «квадрат». Элементы класса (поля имеют статус доступа protected): поле, задающее длину...

Наследование классов - C++
Собирал программу по частям, подскажите как исправить ошибки. #include <iostream> #include <conio.h> class Vehicle //...

Наследование классов - C++
Здравствуйте! Вот написан мой код ниже. Я когда пытаюсь ввести "What give animal:" идёт прекращение работы. Не понимаю почему. Помогите...

наследование классов - C++
Здарова, народ! :D Вот сижу и пытаюсь сделать задание из книги по которой "учимся программировать в универе", а там такой поворот...

14
KAIFAT123
0 / 0 / 0
Регистрация: 15.01.2011
Сообщений: 28
30.01.2013, 18:55  [ТС] #2
ОК! Попрошу по другому! Ребята, пожалуйста сделайте =)
0
Nikcharn
71 / 53 / 3
Регистрация: 31.07.2009
Сообщений: 149
30.01.2013, 19:01 #3
Я когда то делал:
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#include <iostream>
#include <math.h>
 
using namespace std;
 
class Shape
{
public:
    virtual void print() = 0;
    virtual double getP() = 0;
    virtual double getS() = 0;
};
 
class Triangle : public Shape
{
private:
    double cathetus1, cathetus2;
 
public:
    Triangle(double c1, double c2)
    {
        cathetus1 = c1;
        cathetus2 = c2;
    }
 
    void print()
    {
        cout << "Треугольник\n";
    }
 
    double getX1()
    {
        return cathetus1;
    }
 
    double getX2()
    {
        return cathetus2;
    }
 
    double getP()
    {
        return sqrt(cathetus1*cathetus1+cathetus2*cathetus2) + cathetus1 + cathetus2;
    }
 
    double getS()
    {
        return cathetus1*cathetus2/2;
    }
};
 
class Circle : public Shape
{
private:
    double radius;
 
public:
    Circle(double r)
    {
        radius = r;
    }
 
    void print()
    {
        cout << "Круг\n";
    }
 
    double getP()
    {
        return 2*3.14*radius;
    }
 
    double getS()
    {
        return radius*radius*3.14;
    }
};
 
class Rectangle : public Shape
{
private:
    double a, b;
 
public:
    Rectangle(double x, double y)
    {
        a = x;
        b = y;
    }
 
    void print()
    {
        cout << "Прямоугольник\n" ;
    }
 
    double getP()
    {
        return 2*(a+b);
    }
    
    double getS()
    {
        return a*b;
    }
};
 
void main()
{
    setlocale(LC_ALL, "Russian");
    double p[100], s[100];
    bool state = true;
    int number, pIndex = -1, sIndex = -1;
    double x,y;
    Shape * shape;
 
    while (state)
    {
        cout << "1. Треугольник " << "2. Окружность " << "3. Прямоугольник.\n";
        cout <<"Выберите номер фигуры: \n";
        cin >> number;
 
        switch (number)
        {
        case 1:
            cout << "Введите первый катет: \n";
            cin >> x; 
            cout << "Введите второй катет: \n";
            cin >> y;
            shape = new Triangle(x,y);
            cout << shape -> getP() << "\n";
            cout << shape -> getS() << "\n";
            break;
        case 2:
            cout << "Введите радиус: \n";
            cin >> x; 
            shape = new Circle(x);
            cout << shape -> getP() << "\n";
            cout << shape -> getS() << "\n";
            break;
        case 3:
            cout << "Введите первую сторону: \n";
            cin >> x; 
            cout << "Введите вторую сторону: \n";
            cin >> y;
            shape = new Rectangle(x,y);
            cout << shape -> getP() << "\n";
            cout << shape -> getS() << "\n";
            break;
        }
        pIndex++;
        p[pIndex] = shape -> getP();
        sIndex++;
        s[sIndex] = shape -> getS();
        cout << "Продолжить? (1 - yes, 0 - no)\n";
        cin >> state;
    }
 
    delete shape;
}
Вместо прямоугольника сделаешь трапецию, думаю ничего тяжелого нету. Ну и вообще нужно бы Вам разобраться в наследовании, довольно-таки важная тема.
1
KAIFAT123
0 / 0 / 0
Регистрация: 15.01.2011
Сообщений: 28
30.01.2013, 19:10  [ТС] #4
Я бы рад, и с привеликим удовольствием, если бы на заочке давали нормальную литературу или объясняли по человечески.

А можно именно мою лабу изменить, просто для препода принципиально именно вызов из разных мест.
0
Nikcharn
71 / 53 / 3
Регистрация: 31.07.2009
Сообщений: 149
30.01.2013, 20:12 #5
Под вызовом из разных мест вы подразумеваете разбитие на несколько файлов? То есть: shape.h, shape.cpp, main.cpp и т. д. ?

Добавлено через 2 минуты
В принципе, если не заходить углубленно в наследование, то можете почитать здесь:
http://programmersclub.ru/26/
1
KAIFAT123
0 / 0 / 0
Регистрация: 15.01.2011
Сообщений: 28
30.01.2013, 20:19  [ТС] #6
Спасибо за ссылочку, да именно это и подразумевается, посмотри как в архиве. и если не сложно "допили" пожалуйста.
0
Nikcharn
71 / 53 / 3
Регистрация: 31.07.2009
Сообщений: 149
30.01.2013, 21:40 #7
Я тут быстро накидал основную часть, ну а думаю периметр трапеции сам сможешь найти.

Насчет периметра:
P = a+b+2*√(h²+(a-b)²/4).
1
Вложения
Тип файла: rar shape.rar (3.88 Мб, 13 просмотров)
KAIFAT123
0 / 0 / 0
Регистрация: 15.01.2011
Сообщений: 28
31.01.2013, 14:10  [ТС] #8
Вот прям спасибо ОГРОМНЕЙЩЕЕ!!!!

Добавлено через 4 часа 38 минут
Цитата Сообщение от Nikcharn Посмотреть сообщение
Я тут быстро накидал основную часть, ну а думаю периметр трапеции сам сможешь найти.

Насчет периметра:
P = a+b+2*√(h²+(a-b)²/4).
У меня еще вопрос,
C++
1
picture.pushObject
что это и как оно реализуется?
0
Nikcharn
71 / 53 / 3
Регистрация: 31.07.2009
Сообщений: 149
31.01.2013, 20:52 #9
Цитата Сообщение от KAIFAT123 Посмотреть сообщение
что это и как оно реализуется?
У нас есть класс picture, в котором должны хранится наши объекты. Так как мы вводим объекты с клавиатуры,
то нам нужен метод который будет добавлять новый объект в класс. Для этого мы создаем метод
pushObject с входными данными типа Shape.
Вот для этого нам и надо наследование, так как в ином случае пришлось бы делать три разных pushObject для класса трапеции, окружности и прямоугольника. А так мы говорим, что входные данные у нас имеют тип shape.
1
KAIFAT123
0 / 0 / 0
Регистрация: 15.01.2011
Сообщений: 28
31.01.2013, 22:26  [ТС] #10
Извини за нескромный вопрос, а у тебя прога работает?

у меня компилятор порядка 70 ошибок нашел, у меня (VS 2012)
0
Nikcharn
71 / 53 / 3
Регистрация: 31.07.2009
Сообщений: 149
31.01.2013, 23:07 #11
Цитата Сообщение от KAIFAT123 Посмотреть сообщение
Извини за нескромный вопрос, а у тебя прога работает?
у меня компилятор порядка 70 ошибок нашел, у меня (VS 2012)
Я на vs10 писал - все работает,
покажи скрин ошибок.
0
KAIFAT123
0 / 0 / 0
Регистрация: 15.01.2011
Сообщений: 28
31.01.2013, 23:57  [ТС] #12
Щас допилю до конца, выложу прогу.
0
KAIFAT123
0 / 0 / 0
Регистрация: 15.01.2011
Сообщений: 28
01.02.2013, 01:55  [ТС] #13
Цитата Сообщение от Nikcharn Посмотреть сообщение
Я на vs10 писал - все работает,
покажи скрин ошибок.
Ну вот собственно допилил
0
Вложения
Тип файла: rar laba2.rar (2.52 Мб, 13 просмотров)
Nikcharn
71 / 53 / 3
Регистрация: 31.07.2009
Сообщений: 149
01.02.2013, 16:07 #14
В итоге все нормально работает?
0
KAIFAT123
0 / 0 / 0
Регистрация: 15.01.2011
Сообщений: 28
01.02.2013, 20:41  [ТС] #15
Да, в итоге все работает.)))
0
01.02.2013, 20:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.02.2013, 20:41
Привет! Вот еще темы с ответами:

наследование классов - C++
Народ, всем приветик! Уже 3 день сижу над етой темой, не получается задание, вчера выбрасывал на форум исходник, но в конце концов сделал...

наследование классов - C++
Помогите пожалуйста разобраться с задачей Создайте базу данных деканата. В ней фиксируются данные о 2 категориях студентах: студенты...

Наследование классов - C++
Пусть автомобиль характеризуется установленным двигателем, трансмиссией и количеством мест для пассажиров. Двигатель определяется...

Наследование классов - C++
Здравствуйте, начал изучать наследование классов и не могу понять как ведут себя конструкторы с параметром. Вот код, но он печатает на...


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

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

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