• ПОМОГИТЕ ПОЖАЛУЙСТА

    создать шаблон класса стек использовать его решении задачи 1 из раздела классы

    Описать класс реализующий стек написать программу использующую этот класс для моделирования T-образного сортировочного узла на железной дороге

    программа должна разделять на два направления состав состоящий из вагонов двух типов (на каждое направление формируется состав одного типа ).

    Предусмотреть возможность формирование состава из файла и с клавиатуры.

    НА С++

Ответы 1

  • #include <iostream> #include <stdexcept> #include <iterator>   template<typename T> class Stack { public:     Stack() : base(nullptr) {}     ~Stack() {         clear();     }     void push(const T &value) {         base = new Node{value, base};     }     void pop() {         if (isEmpty()) {             throw std::underflow_error("stack is empty");         }         Node *current = base;         base = base->next;         delete current;     }     const T &top() const {         if (isEmpty()) {             throw std::underflow_error("stack is empty");         }         return base->value;     }     bool isEmpty() const {         return base == nullptr;     }     void clear() {         while (base != nullptr) {             Node *current = base;             base = base->next;             delete current;         }     } private:     struct Node {         T value;         Node *next;     };     Node *base; };   template<typename T, typename Iterator, typename OutputIterator, typename Predicate> void split(Iterator begin, Iterator end, OutputIterator out, Predicate predicate) {     Stack<T> stack;     while (begin != end) {         if (predicate(*begin)) {             *out++ = *begin;         } else {             stack.push(*begin);         }         ++begin;     }     for (; !stack.isEmpty(); stack.pop()) {         *out++ = stack.top();     } }   int main() {       Stack<int> stack;       split<int>(std::istream_iterator<int>(std::cin), std::istream_iterator<int>(),             std::ostream_iterator<int>(std::cout, " "),                     [](int value) { return value & 1; });       return 0; }

  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years