Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Earow
0 / 0 / 0
Регистрация: 21.05.2015
Сообщений: 1
1

Создать класс «животное», имеющий классификацию, ареал обитания, число конечностей, число потомков

21.05.2015, 22:24. Просмотров 621. Ответов 0
Метки нет (Все метки)

Задача: создать класс «животное», имеющий классификацию(указатель на строку), ареал обитания, число конечностей, число потомков. Определить конструкторы, деструктор и функцию печати. Создать public-производный класс - «домашнее животное», имеющий кличку. Определить конструкторы по умолчанию и с разным числом параметров, деструктор, функцию печати. Определить функции переназначения клички и числа потомков.

Код работает, но проблема в том, что когда задаю кличку(в функции "main", переменная "e") из 8 и более символов, программа закрывается с ошибкой. Почему?

C++ (Qt)
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
#include <iostream>
#include <cstring>
#include <windows.h>
 
using namespace std;
 
class animal{
 
protected:
  char* classification;
  char* habitat;
  int limb;
  int children;
 
public:
  animal(){
      char a[]="none";
 
      classification=new char[strlen(a)+1];
      strcpy(classification, a);
 
 
      habitat=new char[strlen(a)+1];
      strcpy(habitat, a);
 
 
      limb=0;
      children=0;
  }
 
      animal(char* classification, char* habitat, int limb, int children){
      this->classification=new char[strlen(classification)+1];
      strcpy(this->classification, classification);
 
      this->habitat=new char[strlen(habitat)+1];
      strcpy(this->habitat, habitat);
 
      this->limb=limb;
      this->children=children;
  }
  void print(){
      cout<<"Классификация: "<<classification<<endl;
      cout<<"Ареал обитания: "<<habitat<<endl;
      cout<<"Число конечностей: "<<limb<<endl;
      cout<<"Число потомков: "<<children<<endl;
  }
 
  ~animal(){
      if(classification)
          delete []classification;
 
      if(habitat)
          delete []habitat;
 
 
  }
 
 
};
 
class pet:public animal{
 
private:
    char* name;
 
public:
    pet(){
      char a[]="unnamed";
      name=new char(strlen(a)+1);
      strcpy(name,a);
    }
 
    pet(char* name){
      this->name=new char(strlen(name)+1);
      strcpy(this->name,name);
    }
 
    pet(char* classification, char* habitat, int limb, int children, char* name):animal(classification, habitat, limb, children){
       this->name=new char(strlen(name)+1);
       strcpy(this->name,name);
    }
 
    ~pet(){
      if(name)
          delete []name;
    }
 
    void petprint(){
        animal ::print();
        cout<<"Кличка: "<<name<<endl;
    }
 
    void namechange(char* cname){
        delete []name;
        name=new char(strlen(cname)+1);
        strcpy(name,cname);
    }
 
    void childrenchange(int number){
        children=number;
    }
 
};
 
int main(){
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char a[]="Собака";
    char c[]="Вода";
    int  b=4;
    int  d=8;
    char e[]="Моряк";
    char f[]="Морпех";
 
 
 
 
    pet s(a,c,b,d,e);
    s.petprint();
 
    cout<<endl<<endl<<"Смена клички и числа потомков "<<endl<<endl;
 
    s.namechange(f);
    s.childrenchange(9);
    s.petprint();
 
    system("pause");
    return 0;
}
Добавлено через 1 час 30 минут

Разобрался, скобки
C++ (Qt)
1
2
3
4
 pet(char* name){
      this->name=new char(strlen(name)+1);
      strcpy(this->name,name);
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2015, 22:24
Ответы с готовыми решениями:

Создать класс "животное" и производный класс "домашнее животное"
Создать класс животное, содержащее классификацию (строка), число конечностей,...

Создать базовый класс «Домашнее животное» и производные классы «Собака», «Кошка», «Попугай»
9. Создать базовый класс «Домашнее животное» и производные классы «Собака»,...

Создать класс колесо, имеющий радиус
Создать класс колесо, имеющий радиус. Определить конструкторы и методы доступа....

Создать класс «Квадрат», имеющий длину стороны
Прошу помочь заранее спасибо! Создать класс «Квадрат», имеющий длину...

Создать класс Человек, имеющий имя, возраст
Здравствуйте! Не могли бы Вы помочь мне сделать вот эту задачу: Создать...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2015, 22:24

Создать базовый класс действительное число
Сроки горят, времени нет, сил нет, буду безмерно благодарна за помощь. ...

Создать класс Комплексное число в показательной форме
Всем привет! Помогите, пожалуйста, с задачей. Что нужно: 1. Создать класс:...

Создать класс матрица, умножить матрицу на число
Добрый день,не получается создать метод умножения матрицы на число Вот...


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

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

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