0 / 0 / 0
Регистрация: 15.09.2019
Сообщений: 61
1

Опишите класс, реализующий стек (Stack)

06.02.2020, 15:50. Показов 7111. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Разработать программу, использующую этот класс для моделирования Т-образного сортировочного узла на железной дороге. Программа должна разделять на два направления состав, состоящий из вагонов двух типов (на каждое направление формируется состав из вагонов одного типа). Предусмотреть возможность формирования состава из файла или с клавиатуры. Возможно использование стандартных функций при работе со стеком в виде контейнера из библиотеки STL:
push() - поместить элемент в вершину стека;
pop() - удалить элемент из вершины стека;
printStack() - вывести стек на экран;
getStackSize() – вернуть размер стека.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.02.2020, 15:50
Ответы с готовыми решениями:

Класс, реализующий стек
Помогите девушке, только учусь программировать и чет пока не очень=( плиииииииииииииииииииииииииз...

Класс, реализующий стек точек
описание класса ,реализующего стек точек R2(int ,int) очень нужно,плиииз

Написать класс, реализующий Стек
Написать класс, реализующий стек или очередь (что указано в задании). В классе описать...

Описать класс, реализующий стек
Есть задание: Описать класс, реализующий стек и работу с ним. 1.) Класс должен содержать следующие...

7
5987 / 3370 / 1373
Регистрация: 07.02.2019
Сообщений: 8,526
06.02.2020, 16:39 2
amcs,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <stack>
 
template<class T>
class Stack
{
    std::stack<T> m_stack;
public:
    void push(const T& val)
    {
        m_stack.push(val);
    }
    void pop()
    {
        return m_stack.pop();
    }
    void printStack()
    {
        using base = decltype(m_stack);
        struct acces : public base { using base::c; };
        for (auto const& val : m_stack.*&acces::c)
            std::cout << val << std::endl;
    }
    size_t getStackSize()
    {
        return m_stack.size();
    }
};
1
"C with Classes"
1641 / 1398 / 523
Регистрация: 16.08.2014
Сообщений: 5,854
Записей в блоге: 1
06.02.2020, 17:11 3
Цитата Сообщение от zayats80888 Посмотреть сообщение
using base = decltype(m_stack);
        struct acces : public base { using base::c; };
        for (auto const& val : m_stack.*&acces::c)
            std::cout << val << std::endl;
долго думал? К чему все эти выкрутасы, можешь объяснить? 5 минут смотрю, не могу въехать.
0
5987 / 3370 / 1373
Регистрация: 07.02.2019
Сообщений: 8,526
06.02.2020, 17:17 4
Цитата Сообщение от _stanislav Посмотреть сообщение
К чему все эти выкрутасы, можешь объяснить?
шоб underlying container распечатать

Добавлено через 1 минуту
Цитата Сообщение от _stanislav Посмотреть сообщение
долго думал?
Нет, мне один раз на этом форуме показали когда то и я запомнил
0
4462 / 2398 / 857
Регистрация: 29.11.2010
Сообщений: 5,311
06.02.2020, 17:33 5
Из задания понял только, что надо стэк написать.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include <stdexcept>
#include <iostream>
#include <iomanip>
 
 
template<typename T>
class Stack {
public:
    Stack(size_t size) : maximum(size), data(new T[maximum]), size(0) {}
    Stack(const Stack<T>& o) : maximum(o.maximum), data(new T[maximum]), size(o.size) {
        std::copy(o.data, o.data + size, data);
    }
    Stack<T>& operator=(const Stack<T>& o) {
        if (this != &o) {
            if (data != nullptr) {
                delete[] data;
            }
            maximum = o.maximum;
            data = new T[maximum];
            size = o.size;
            std::copy(o.data, o.data + size, data);
        }
        return *this;
    }
    virtual ~Stack() {
        if (data != nullptr) {
            delete[] data;
        }
    }
    bool isEmpty() const { return size == 0; }
    size_t getSize() const { return size; }
    T& top() {
        assertUnderflow();
        return data[size - 1];
    }
    const T& top() const {
        assertUnderflow();
        return data[size - 1];
    }
    void push(const T& value) {
        assertOverflow();
        data[size++] = value;
    }
    void push(T&& value) {
        assertOverflow();
        data[size++] = std::move(value);
    }
    void pop() {
        assertUnderflow();
        data[--size];
    }
    T& operator[](size_t i) {
        return data[i];
    }
    const T& operator[](size_t i) const {
        return data[i];
    }
private:
    void assertUnderflow() {
        if (isEmpty()) {
            throw new std::underflow_error("not enough data in stack");
        }
    }
    void assertOverflow() {
        if (size >= maximum) {
            throw new std::overflow_error("stack overflow");
        }
    }
    size_t maximum;
    T* data;
    size_t size;
};
 
template<typename T>
std::ostream& operator<<(std::ostream& out, const Stack<T>& s) {
    for (size_t i = 0; i < s.getSize(); ++i) {
        out << s[i];
        if (i < s.getSize() - 1) {
            out << ", ";
        }
    }
    return out;
}
 
int main(int argc, char** argv) {
    Stack<std::string> s(10);
    s.push("aaa");
    s.push("bbb");
    std::cout << "TOP: " << s.top() << std::endl;
    std::cout << "CONTENT: " << s << std::endl;
    std::cout << "POP" << std::endl;
    s.pop();
    std::cout << "TOP: " << s.top() << std::endl;
    std::cout << "CONTENT: " << s << std::endl;
 
    return 0;
}
3
"C with Classes"
1641 / 1398 / 523
Регистрация: 16.08.2014
Сообщений: 5,854
Записей в блоге: 1
07.02.2020, 00:44 6
zayats80888, а эдвенс не катит?
0
5987 / 3370 / 1373
Регистрация: 07.02.2019
Сообщений: 8,526
07.02.2020, 00:56 7
Цитата Сообщение от _stanislav Посмотреть сообщение
а эдвенс не катит?
Хто?
0
"C with Classes"
1641 / 1398 / 523
Регистрация: 16.08.2014
Сообщений: 5,854
Записей в блоге: 1
07.02.2020, 00:58 8
Цитата Сообщение от zayats80888 Посмотреть сообщение
Хто?
не знаю, знаю только то что люблю C https://www.youtube.com/watch?v=twSn58BPgWM
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.02.2020, 00:58
Помогаю со студенческими работами здесь

Описать класс, реализующий стек
Описать класс, реализующий стек. Написать программу, использующую этот класс для моделирования...

Описать класс, реализующий стек
Очень нужна хоть какая-нибудь помощь! У меня никак не получается написать программу а заказывать...

Описать класс, реализующий стек
Всем привет, нуждаюсь в помощи. Описать класс, реализующий стек. Написать программу, использующую...

Класс Стек Stack. не работает класс исключений
Здравствуйте! Решил проверить код на пригодность, но почему то класс исключений выскакивает на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru