С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 15.01.2011
Сообщений: 28
1

Наследование классов

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

Author24 — интернет-сервис помощи студентам
Доброго времени Вам.

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

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

Создать абстрактный класс Figure. На его основе реализовать классы Rectangle (прямо-угольник), Circle (круг) и Trapeze (трапеция) с возможностью вычисления площади и периметра. Создать класс Picture, содержащий массив объектов этих клас-сов в динамической памяти. Предусмотреть возможность ввода и вывода характеристик объектов
Вложения
Тип файла: rar laba2.rar (2.46 Мб, 25 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.01.2013, 23:35
Ответы с готовыми решениями:

Автоматическая генерация классов С ++ с UML диаграмм классов. Наследование в с++. Абстрактные классы. WhiteStarUML
Создать классовую модель(желательно в WhiteStarUML), которая включает в себя абстрактный класс...

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

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

наследование классов
Есть базовый класс class List { protected: struct Element { char name; ...

14
0 / 0 / 0
Регистрация: 15.01.2011
Сообщений: 28
30.01.2013, 18:55  [ТС] 2
ОК! Попрошу по другому! Ребята, пожалуйста сделайте =)
0
71 / 53 / 10
Регистрация: 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
0 / 0 / 0
Регистрация: 15.01.2011
Сообщений: 28
30.01.2013, 19:10  [ТС] 4
Я бы рад, и с привеликим удовольствием, если бы на заочке давали нормальную литературу или объясняли по человечески.

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

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

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

у меня компилятор порядка 70 ошибок нашел, у меня (VS 2012)
0
71 / 53 / 10
Регистрация: 31.07.2009
Сообщений: 149
31.01.2013, 23:07 11
Цитата Сообщение от KAIFAT123 Посмотреть сообщение
Извини за нескромный вопрос, а у тебя прога работает?
у меня компилятор порядка 70 ошибок нашел, у меня (VS 2012)
Я на vs10 писал - все работает,
покажи скрин ошибок.
0
0 / 0 / 0
Регистрация: 15.01.2011
Сообщений: 28
31.01.2013, 23:57  [ТС] 12
Щас допилю до конца, выложу прогу.
0
0 / 0 / 0
Регистрация: 15.01.2011
Сообщений: 28
01.02.2013, 01:55  [ТС] 13
Цитата Сообщение от Nikcharn Посмотреть сообщение
Я на vs10 писал - все работает,
покажи скрин ошибок.
Ну вот собственно допилил
Вложения
Тип файла: rar laba2.rar (2.52 Мб, 27 просмотров)
0
71 / 53 / 10
Регистрация: 31.07.2009
Сообщений: 149
01.02.2013, 16:07 14
В итоге все нормально работает?
0
0 / 0 / 0
Регистрация: 15.01.2011
Сообщений: 28
01.02.2013, 20:41  [ТС] 15
Да, в итоге все работает.)))
0
01.02.2013, 20:41
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.02.2013, 20:41
Помогаю со студенческими работами здесь

Наследование классов
я решил по примеру одной задачи свою, но там много ошибок, может ктото сможет поправить их. ...

Наследование классов
Здравствуйте. Помогите пожалуйста решить проблему по наследованию классов. Есть базовый класс...

Наследование классов
Очень нужна помощь, организую открытое наследование, но постоянно выходят ошибки, не могу понять от...

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru