Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с написанием кода на C++

a Ученик (88), на голосовании 5 месяцев назад
На C++ Разработать код с использованием наследования классов, реализующую классы: массив; стек; очередь. Используя виртуальные функции, не зная с объектом какого класса вы работаете, выведите на экран количество элементов и добавьте элемент.
Голосование за лучший ответ
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (264378) 6 месяцев назад
 #include  
#include

class BaseContainer {
public:
virtual void printSize() const = 0;
virtual void addElement(int element) = 0;
};

class Array : public BaseContainer {
private:
std::vector elements;

public:
void printSize() const override {
std::cout << "Array size: " << elements.size() << std::endl;
}

void addElement(int element) override {
elements.push_back(element);
}
};

class Stack : public BaseContainer {
private:
std::vector elements;

public:
void printSize() const override {
std::cout << "Stack size: " << elements.size() << std::endl;
}

void addElement(int element) override {
elements.push_back(element);
}
};

class Queue : public BaseContainer {
private:
std::vector elements;

public:
void printSize() const override {
std::cout << "Queue size: " << elements.size() << std::endl;
}

void addElement(int element) override {
elements.push_back(element);
}
};

int main() {
Array arr;
Stack stack;
Queue queue;

BaseContainer* containers[] = {&arr, &stack, &queue};

for (auto container : containers) {
container->printSize();
container->addElement(42);
container->printSize();
std::cout << std::endl;
}

return 0;
}
Похожие вопросы