Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
1

Иерархия классов ног и гнезд

27.05.2016, 14:17. Показов 878. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написать программу для следующей иерархии наследования: Первый базовый класс: число ног, число крыльев. Второй базовый класс: вьет ли гнездо, роет ли нору. Производный класс: название животного (олень, чайка, и т.д.). Оформить все конструкторы и деструкторы, в каждый класс включить по 2 метода. Перегрузить один оператор.
Заранее спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.05.2016, 14:17
Ответы с готовыми решениями:

Иерархия классов
Доброво времини суток! Нужна помощ, я не могу понять что я делаю не так в конструкторе с...

Иерархия классов
Порядок выполнения работы. 1. Создать проект, который содержит консольную программу Win32. 2....

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

Иерархия классов
Доброго времени суток. Я написал 2 класса, один из которых - наследник class Entity { ...

14
Модератор
3388 / 2160 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
27.05.2016, 15:13 2
Aymurat, я пишу заметку по психологии, скажите, чем руководствуется ваш разум когда дает телу команду разместить на форуме тему подобного содержания? ну я в том смысле: думает ли ваш мозг. думает ли он о том что тут сидят роботы которые только и ждут что бы накинуться на вашу задачу и решить ее? или лайт версия: вы забыли приписать в начале "эй, ребята, если у кого есть решение к задаче скиньте пож"?
0
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
27.05.2016, 15:23  [ТС] 3
vxg,
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
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string.h>
#include <locale.h>
using namespace std;
class FirstBase
{
public:
    int c_nogi, c_krylya;
    FirstBase(int nogi, int krylya)
    {
        c_nogi = nogi;
        c_krylya = krylya;
    }
    int get_nogi()
    {
        return c_nogi;
    }
    int get_krylya()
    {
        return c_krylya;
    }
    void show_nogi()
    {
        cout << "Число ног: " << c_nogi << endl;
    }
    void show_krylya()
    {
        cout << "Число крыльев: " << c_krylya << endl;
    }
    ~FirstBase()
    {
        cout << "Деструктор оформлен, он сработал бы здесь." << endl;
    }
};
class SecondBase
{
public:
    bool gnezdo, nora;
    SecondBase(bool ggnezdo, bool nnora)
    {
        gnezdo = ggnezdo;
        nora = nnora;
    }
    bool get_gnezdo()
    {
        return gnezdo;
    }
    bool get_nora()
    {
        return nora;
    }
    void show_gnezdo()
    {
        cout << "Вьет ли гнездо? ";
        if (gnezdo) cout << "Да" << endl; else cout << "Нет" << endl;
    }
    void show_nora()
    {
        cout << "Роет ли нору? ";
        if (nora) cout << "Да" << endl; else cout << "Нет" << endl;
    }
    ~SecondBase()
    {
        cout << "Деструктор оформлен, он сработал бы здесь." << endl;
    }
};
class Animal : public FirstBase, public SecondBase {
public:
    char* name_of_animal;
    Animal(char* name_off_animal, int nogi, int krylya, bool ggnezdo, bool nnora) : FirstBase(nogi, krylya), SecondBase(ggnezdo, nnora)
    {
        /*c_nogi = nogi;
        c_krylya = krylya;
        gnezdo = ggnezdo;
        nora = nnora;
        */
        strcpy(name_of_animal, name_off_animal);
    }
    char* get_animals_name(char *name_of_animal)
    {
        return name_of_animal;
    }
    void show()
    {
        cout << "Название животного: "; cout << name_of_animal << endl;
        cout << "Количество ног: " << c_nogi << endl;
        cout << "Количество крыльев: " << c_krylya << endl;
        cout << "Роет ли нору? ";
        if (nora) cout << "Да" << endl; else cout << "Нет" << endl;
        cout << "Вьет ли гнездо? ";
        if (gnezdo) cout << "Да" << endl; else cout << "Нет" << endl;
    }
    ~Animal()
    {
        cout << "Деструктор оформлен, он сработал бы здесь." << endl;
    }
};
int main()
{
    setlocale(LC_ALL, "Rus");
    int nogi = 4, krylya = 2;
    bool gnezdno = true, nora = false;
    char* imya = "Monstr";
    Animal lolol(imya, nogi, krylya, gnezdno, nora);
    lolol.show();
    system("pause");
}
Вот что получилось. Помогите, пожалуйста, пофиксить ошибку

Добавлено через 2 минуты
vxg, задачка то легкая, для разминки самое-то. Может, у кого да найдется время. А может и нет. В принципе, у Вас есть вариант просто проигнорировать эту тему.
0
Модератор
3388 / 2160 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
27.05.2016, 15:24 4
Цитата Сообщение от Aymurat Посмотреть сообщение
Помогите, пожалуйста, пофиксить ошибку
укажите где возникает ошибка
0
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
27.05.2016, 15:26  [ТС] 5
vxg, поменял main немного
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
    setlocale(LC_ALL, "Rus");
    int nogi = 4, krylya = 2;
    bool gnezdno = true, nora = false;
    char* imya = "Monstr";
    FirstBase bs1(nogi, krylya);
    bs1.show_krylya();
    bs1.show_nogi();
    SecondBase bs2(gnezdno, nora);
    bs2.show_gnezdo();
    bs2.show_nora();
    Animal lolol(imya, nogi, krylya, gnezdno, nora); // вот начиная отсюда при дебаге не показывает ничего
    lolol.show();
    system("pause");
}
А базовые вроде бы работают... Нужно еще перегрузить любой оператор. А в перегрузке я вообще ничего не знаю...
0
Модератор
3388 / 2160 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
27.05.2016, 15:36 6
Aymurat, перегрузите <<

Добавлено через 46 секунд
хотя нет, с ним не выйдет

Добавлено через 37 секунд
во всяком случае он не будет принадлежать классу

Добавлено через 2 минуты
C++
1
2
3
4
5
std::ostream &operator<<(std::ostream &out, const FirstBase &obj)
{
    out << "Число ног: " << obj.c_nogi << endl;
    out << "Число крыльев: " << obj.c_krylya << endl;
}
1
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
27.05.2016, 15:42  [ТС] 7
Цитата Сообщение от vxg Посмотреть сообщение
C++
1
2
3
4
5
std::ostream &operator<<(std::ostream &out, const FirstBase &obj)
{
* * out << "Число ног: " << obj.c_nogi << endl;
* * out << "Число крыльев: " << obj.c_krylya << endl;
}
Пишет, что operator<< должна возвращать значение.

Добавлено через 48 секунд
Цитата Сообщение от vxg Посмотреть сообщение
укажите где возникает ошибка
Насчет ошибки, что с ней делать? То есть, как пофиксить? Может забываю чего? времени пол часа осталось.

Добавлено через 2 минуты
Цитата Сообщение от Aymurat Посмотреть сообщение
Пишет, что operator<< должна возвращать значение.
пофиксил, добавив в конец перегрузки return out;
1
Модератор
3388 / 2160 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
27.05.2016, 15:49 8
Цитата Сообщение от Aymurat Посмотреть сообщение
пофиксил, добавив в конец перегрузки return out;
да, так и надо было не скопировалось просто, молодца
0
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
27.05.2016, 15:50  [ТС] 9
vxg, мне бы теперь заставить работать Animal
Никак не знаю, что делать
0
Модератор
3388 / 2160 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
27.05.2016, 15:52 10
Цитата Сообщение от Aymurat Посмотреть сообщение
заставить работать Animal
работать кем)?
0
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
27.05.2016, 15:58  [ТС] 11
vxg, да кем угодно
Главное, чтобы при
C++
1
2
Animal lolol(imya,nogi, krylya,gnezdno,nora);
    lolol.show();
ошибок не было
0
Модератор
3388 / 2160 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
27.05.2016, 16:00 12
Цитата Сообщение от Aymurat Посмотреть сообщение
ошибок не было
и какие же там ошибки?

Добавлено через 57 секунд
Aymurat, а, да вы там крашите все
0
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
27.05.2016, 16:01  [ТС] 13
Цитата Сообщение от vxg Посмотреть сообщение
и какие же там ошибки?
Вот такие
Миниатюры
Иерархия классов ног и гнезд  
0
Модератор
3388 / 2160 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
27.05.2016, 16:01 14
Лучший ответ Сообщение было отмечено Aymurat как решение

Решение

в строке
C++
1
strcpy(name_of_animal, name_off_animal)
вы копируете из строки в область памяти которая не существует (я не нашел у вас места где бы выделялась память под name_of_animal). если вам надо работать с C-строками либо делайте strdup либо заведите массивы скажем char name[50];
0
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
27.05.2016, 16:03  [ТС] 15
vxg, благодарю.
0
27.05.2016, 16:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.05.2016, 16:03
Помогаю со студенческими работами здесь

Иерархия классов
Помогите, пожалуйста, надо создать иерархию классов: класс строка -&gt; класс строка-идентификатор -&gt;...

Иерархия классов С++
В общем, программа построена правильно(в приложениях фото задания). Но проблема в том, что &quot;х&quot; -...

Иерархия классов ....
Добрый вечер Всем !!! ))) У меня возникли некоторые трудности с написанием программы, имеющей...

Иерархия классов
Пожалуйста помогите написать программу: Иерархия классов: служащий, персона, рабочий, инженер;...


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

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