Top.Mail.Ru
Ответы

Помогите с решением задачи

Задача выглядит так
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))

По дате
По рейтингу
Аватар пользователя
Мудрец
8мес

Решение задачи на C++

1. Создание базового класса Animal

123456789101112131415161718192021222324252627282930313233343536
#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

1234567891011121314151617181920212223242526272829
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. Основная программа

123456789101112131415161718192021222324252627282930313233
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;
}

Вариативная часть

Для нахождения среднего возраста:

1234567891011121314151617181920212223242526272829
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;
}

Эта программа реализует все необходимые требования, включая инкапсуляцию

Аватар пользователя
Мудрец
8мес

А причем здесь "Вопросы о фауне"?

Аватар пользователя
Знаток
8мес

Наглядный пример того как нейросеть "умна"... Видит class Animal, Dog... Ага, стало быть це "вопрос о фауне"



Видео по теме