C/C++

Лёгкое задание с классами C++

Описать Утконоса Перри и Огурчика Рика с помощью классов. Подумай, какие поля и методы могут помочь тебе в этой задаче (например, Перри может выяснять, преступник заданный человек или нет, а Рик может считать, сколько крыс он победил) и как с помощью механизма наследования, ты можешь упростить её себе. Реализуй минимум 2 класса и используй наследование (минимум для одного класса). Объект каждого класса как минимум должен содержать информацию об имени персонажа и мультике откуда он. Также создай 1-2 метода для каждого класса. Можешь использовать переопределение, виртуальные и статические методы - всё на твой вкус. Не забудь протестировать работу классов в функции main().
Не забудь протестировать работу классов в функции main().
ну тестируй...

 #include  
#include

// Базовый класс "Персонаж"
class Character {
public:
Character(const std::string& name, const std::string& cartoon)
: name(name), cartoon(cartoon) {}

// Метод для получения имени персонажа
std::string getName() const {
return name;
}

// Метод для получения мультика, откуда персонаж
std::string getCartoon() const {
return cartoon;
}

// Виртуальный метод, который может быть переопределен в производных классах
virtual void introduce() const {
std::cout
Maratt Makhmoutov
Maratt Makhmoutov
67 018
Лучший ответ
``
#include <iostream>
#include <string>

// Базовый класс для персонажей мультфильма
class Character {
public:
Character(const std::string& name, const std::string& cartoon)
: name(name), cartoon(cartoon) {}

// Вывод информации о персонаже
void displayInfo() {
std::cout << "Имя: " << name << std::endl;
std::cout << "Мультфильм: " << cartoon << std::endl;
}

// Виртуальный м��тод для выполнения действия персонажа
virtual void performAction() {
std::cout << "Персонаж выполняет действие." << std::endl;
}

protected:
std::string name;
std::string cartoon;
};

// Класс для Утконоса Перри, наследующийся от базового класса Character
class PerryThePlatypus : public Character {
public:
PerryThePlatypus(const std::string& name)
: Character(name, "Финес и Ферб") {}

// Переопределение метода performAction для Утконоса Перри
void performAction() override {
std::cout << "Утконос Перри раскрывает свою личность и борется с злодеями!" << std::endl;
}

// Метод для проверки, является ли персонаж шпионом
bool isSecretAgent() {
return true;
}
};

// Класс для Огурчика Рика, наследующийся от базового класса Character
class RickCucumber : public Character {
public:
RickCucumber(const std::string& name)
: Character(name, "Рик и Морти") {}

// Переопределение метода performAction для Огурчика Рика
void performAction() override {
std::cout << "Огурчик Рик исследует мультивселенную и решает научные задачи!" << std::endl;
}

// Метод для подсчета количества побед над крысами
int countRatVictories() {
return 42; // Просто для примера
}
};

int main() {
PerryThePlatypus perry("Перри");
RickCucumber rick("Рик");

// Вывод информации о персонажах и выполнение их действий
std::cout << "Информация о персонаже Утконос Перри:" << std::endl;
perry.displayInfo();
perry.performAction();
std::cout << "Это шпион? " << (perry.isSecretAgent() ? "Да" : "Нет") << std::endl;
std::cout << std::endl;

std::cout << "Информация о персонаже Огурчик Рик:" << std::endl;
rick.displayInfo();
rick.performAction();
std::cout << "Количество побед над крысами: " << rick.countRatVictories() << std::endl;

return 0;
}
``
#include <iostream>
#include <string>

// Базовый класс "Персонаж"
class Character {
public:
Character(const std::string& name, const std::string& cartoon)
: name(name), cartoon(cartoon) {}

// Метод для получения имени персонажа
std::string getName() const {
return name;
}

// Метод для получения мультика, откуда персонаж
std::string getCartoon() const {
return cartoon;
}

// Виртуальный метод, который может быть переопределен в производных классах
virtual void introduce() const {
std::cout << "Я - " << name << " из мультика " << cartoon << std::endl;
}

private:
std::string name;
std::string cartoon;
};

// Производный класс "Персонаж Перри"
class Perry : public Character {
public:
Perry(const std::string& name)
: Character(name, "Агент Перри") {}

// Переопределение метода introduce
void introduce() const override {
std::cout << "Я - " << getName() << ", известный как Агент Перри!" << std::endl;
}

// Метод для проверки, является ли персонаж преступником
bool isCriminal(const std::string& person) const {
return person == "Доктор Зло";
}
};

// Производный класс "Персонаж Рик"
class Rick : public Character {
public:
Rick(const std::string& name)
: Character(name, "Рик и Морти") {}

// Переопределение метода introduce
void introduce() const override {
std::cout << "Я - " << getName() << ", приключенец из мультика Рик и Морти!" << std::endl;
}

// Метод для подсчета побед над крысами
int countRatVictories(int ratCount) {
return ratCount * 10; // Просто для примера
}
};

int main() {
Perry perry("Перри"); // Создаем объект Перри
Rick rick("Рик"); // Создаем объект Рик

// Вызываем метод introduce для каждого персонажа
perry.introduce();
rick.introduce();

// Проверяем, является ли Доктор Зло преступником
if (perry.isCriminal("Доктор Зло")) {
std::cout << "Доктор Зло - преступник!" << std::endl;
} else {
std::cout << "Доктор Зло - не преступник!" << std::endl;
}

// Считаем победы над крысами
int ratCount = 5; // Просто для примера
int ratVictories = rick.countRatVictories(ratCount);
std::cout << "Рик победил " << ratVictories << " крыс!" << std::endl;

return 0;
}
Dimkam *
Dimkam *
369