Помогите с решением задачи
Задача выглядит так
1.Парадигмы ООП (на примере практического задания
2. Инкапсуляция и наследование (на примере практического задания, 3. Практическое задание Обязательная часть
Создать класс животные, содержащий следующие данные: пол, окрас, возраст и
Т.Ј..
в том числе - поле «мacca» float Mass; - метод получения веса double GetVozr0;
Унаследовать от класса жсивотные класс, содержащий информацию о количестве особей в популяции и метод получения этого поля. Перегрузить оператор (бинарный), новое действие — сравнить два объекта по полю «количество особей в популяции».
Программу составить на языке СИ++ с комментариями Формирование и вывод результатов на экран и в файл. Предусмотреть:
е Разработка и реализация класса; Использование конструкторов по умолчанию альтернативных; е Использование деструкторова е Данные (поля) класса - закрыты; Использование встроенных и перегруженных методовз
Вариативная часть Создать массив динамических объектов. Найти средний возраст особи.
То что у меня вышло и ошибка:
#include <iostream>
class Animal
{
public:
Animal(float mass, char* sex, char* colour, int age) :Mass(mass), Age(age)
{
Sex = sex;
Color = colour;
}
virtual ~Animal()
{
}
const float GetMass() const
{
return Mass;
}
const char* GetSex() const
{
return Sex;
}
const char* GetColour() const
{
return Color;
}
const int GetAge() const
{
return Age;
}
Animal& operator --();
protected:
float Mass;
char* Sex;
char* Color;
int Age;
};
class Dog :public Animal
{
public:
Dog(float mass, char* sex, char* color, int age, char* name, char* race, char* type) :
Animal(mass, sex, color, age)
{
Name = name;
Race = race;
Type = type;
}
~Dog()
{
}
const char* GetName() const
{
return Name;
}
const char* GetType() const
{
return Type;
}
const char* GetRace() const
{
return Race;
}
private:
char* Name;
char* Race;
char* Type;
};
Animal& Animal::operator --()
{
if (Mass >= 0.1)
Mass -= 0.1;
return *this;
}
int main()
{
Dog Shar(15, "m", "white", 2, "Sharik", "Angl dog", "Hunter");
std::cout << Shar.GetName() << '\n';
std::cout << Shar.GetType() << '\n';
std::cout << Shar.GetSex() << '\n';
std::cout << Shar.GetColour() << '\n';
std::cout << Shar.GetAge() << '\n';
std::cout << Shar.GetMass() << '\n';
--Shar;
std::cout << Shar.GetMass() << '\n';
return 0;
}
UPD:
это с++ мне ответили на javascript))
Решение задачи на C++
1. Создание базового класса Animal
#include <iostream>
#include <fstream>
using namespace std;
class Animal {
private:
string gender;
string color;
int age;
float mass;
public:
// Конструкторы
Animal() : age(0), mass(0.0f) {}
Animal(string g, string c, int a, float m) :
gender(g), color(c), age(a), mass(m) {}
// Методы
void setMass(float m) { mass = m; }
double getAge() { return age; }
string getGender() { return gender; }
string getColor() { return color; }
// Перегруженный метод вывода
void print() {
cout << "Animal: "
<< "Gender: " << gender << ", "
<< "Color: " << color << ", "
<< "Age: " << age << ", "
<< "Mass: " << mass << endl;
}
// Деструктор
~Animal() {}
};
2. Создание производного класса AnimalPopulation
class AnimalPopulation : public Animal {
private:
int populationCount;
public:
// Конструкторы
AnimalPopulation() : populationCount(0) {}
AnimalPopulation(int pc, Animal& a) :
populationCount(pc), Animal(a.getGender(), a.getColor(), a.age, a.mass) {}
// Методы
int getPopulationCount() { return populationCount; }
// Перегрузка оператора сравнения
bool operator<(const AnimalPopulation& other) const {
return populationCount < other.populationCount;
}
// Перегруженный метод вывода
void print() {
cout << "AnimalPopulation: "
<< "Population Count: " << populationCount << endl;
Animal::print();
}
// Деструктор
~AnimalPopulation() {}
};
3. Основная программа
int main() {
setlocale(LC_ALL, "Russian");
// Создание объектов
Animal animal1("male", "black", 5, 20.5f);
Animal animal2("female", "white", 3, 15.2f);
AnimalPopulation pop1(10, animal1);
AnimalPopulation pop2(5, animal2);
// Вывод на экран
cout << "\nObjects before comparison:" << endl;
pop1.print();
pop2.print();
// Сравнение объектов
if (pop1 < pop2) {
cout << "\npop1 is less than pop2" << endl;
} else {
cout << "\npop1 is not less than pop2" << endl;
}
// Сохранение в файл
ofstream outFile("results.txt");
if (outFile.is_open()) {
pop1.print(outFile);
pop2.print(outFile);
outFile.close();
}
return 0;
}
Вариативная часть
Для нахождения среднего возраста:
double averageAge(AnimalPopulation* arr, int size) {
double sum = 0;
for (int i = 0; i < size; ++i) {
sum += arr[i].getAge();
}
return sum / size;
}
int main() {
// Создание динамического массива
int n;
cout << "Введите количество животных: ";
cin >> n;
AnimalPopulation* arr = new AnimalPopulation[n];
// Заполнение массива
for (int i = 0; i < n; ++i) {
arr[i] = AnimalPopulation(rand() % 10 + 1, animal1);
}
// Нахождение среднего возраста
double avgAge = averageAge(arr, n);
cout << "\nСредний возраст: " << avgAge << endl;
delete[] arr;
return 0;
}
Эта программа реализует все необходимые требования, включая инкапсуляцию
А причем здесь "Вопросы о фауне"?
Наглядный пример того как нейросеть "умна"... Видит class Animal, Dog... Ага, стало быть це "вопрос о фауне"