Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/29: Рейтинг темы: голосов - 29, средняя оценка - 4.59
1 / 1 / 0
Регистрация: 25.05.2014
Сообщений: 14

Написать класс, который реализует функциональность стека

25.06.2021, 14:23. Показов 6001. Ответов 1

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста, нужно написать класс, который реализует функциональность стека.
Класс Stack должен иметь :
private - массив целых чисел длиной 10;
private целочисленное значение для отслеживания длины стека;
public - метод с именем reset(), который будет сбрасывать длину и все значения элементов на 0;
public - метод с именем push(), который будет добавлять значение в стек.push() должен возвращать значение false, если массив уже заполнен, и true в противном случае;
public - метод с именем pop() для вытягивания и возврата значения из стека. Если в стеке нет значений, то должно выводиться предупреждение;
public - метод с именем print(), который будет выводить все значения стека.
Код main():

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int main()
 
{
    Stack stack;
    stack.reset();
    stack.print();
  
    stack.push(3);
    stack.push(7);
    stack.push(5);
    stack.print();
   
    stack.pop();
    stack.print();
 
    stack.pop();
    stack.pop();
    stack.print();   
 
    return 0;
}

Этот код должен выводить:

( )
( 3 7 5 )
( 3 7 )
( )

Насобирал вот такой код
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
#include <cassert> // для assert
#include <iostream> 
#include <iomanip> // для setw
 
template <typename T>
class Stack
{
private:
    const int size;                   // максимальное количество элементов в стеке
    int top;                          // номер текущего элемента стека
    Stack(int = 10);                  // по умолчанию размер стека равен 10 элементам
public:
    Stack(const Stack<T> &);          // конструктор копирования
    ~Stack();                         // деструктор
 
    inline void push(const T & );     // поместить элемент в вершину стека
    inline T pop();                   // удалить элемент из вершины стека и вернуть его
    inline void printStack();         // вывод стека на экран
    inline const T &Peek(int ) const; // n-й элемент от вершины стека
    inline int getStackSize() const;  // получить размер стека
    inline int getTop() const;        // получить номер текущего элемента в стеке
};
 
// реализация методов шаблона класса STack 
 
// вывод стека на экран
template <typename T>
inline void Stack<T>::printStack()
{
    for (int ix = top - 1; ix >= 0; ix--)
        cout << "|" << setw(4) << stackPtr[ix] << endl;
}
 
// вернуть размер стека
template <typename T>
inline int Stack<T>::getStackSize() const
{
    return size;
}
 
// вернуть размер стека
template <typename T>
inline int Stack<T>::getTop() const
{
    return top;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.06.2021, 14:23
Ответы с готовыми решениями:

Создать класс который реализует динамический массив
Доброго времени суток! Помогите с такой задачей - Создать класс который реализует динамический массив(нельзя использовать шаблон...

Разработать класс Keeper, который реализует контейнер для хранения и обработки объектов
Есть задание по лабораторной работе. Нельзя использовать STL контейнеры для реализации программы. Разработать класс Keeper, который...

Написать класс который реализует методы
Написать класс Box, который реализует методы : Закрыть, Открыть, Заблокировать Реализовать класс Сейф, который наследует класс Box ,та...

1
1 / 1 / 0
Регистрация: 25.05.2014
Сообщений: 14
28.06.2021, 21:22  [ТС]
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
#include <iostream>
#include <cassert>
 
class Stack
{
private:
    int m_array[10]; // это будут данные нашего стека 
    int m_next; // это будет индексом следующего свободного элемента стека
 
public:
 
    void reset()
    {
        m_next = 0;
        for (int i = 0; i < 10; ++i)
            m_array[i] = 0;
    }
 
    bool push(int value)
    {
        // Если стек уже заполнен, то возвращаем false
        if (m_next == 10)
            return false;
        
        m_array[m_next++] = value; // присваиваем следующему свободному элементу значение value, а затем увеличиваем m_next
        return true;
    }
 
    int pop()
    {
        // Если элементов в стеке нет, то выводим стейтмент assert
        assert (m_next > 0);
 
                // m_next указывает на следующий свободный элемент, поэтому последний элемент со значением - это m_next-1.
                // Мы хотим сделать следующее:
                // int val = m_array[m_next-1]; // получаем последний элемент со значением
                // --m_next; // m_next теперь на единицу меньше, так как мы только что вытянули верхний элемент стека
                // return val; // возвращаем элемент
                // Весь вышеприведенный код можно заменить следующей (одной) строкой кода
        return m_array[--m_next];
    }
 
    void print()
    {
        std::cout << "( ";
        for (int i = 0; i < m_next; ++i)
            std::cout << m_array[i] << ' ';
        std::cout << ")\n";
    }
};
 
int main()
{
    Stack stack;
    stack.reset();
 
    stack.print();
 
    stack.push(3);
    stack.push(7);
    stack.push(5);
    stack.print();
 
    stack.pop();
    stack.print();
 
    stack.pop();
    stack.pop();
 
    stack.print();
 
    return 0;
}
Вот такой код
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.06.2021, 21:22
Помогаю со студенческими работами здесь

Написать класс, который реализует работу с ирациональными комплексными числами
Написать класс, который реализует работу с ирациональными комплексными числами. Обеспечить проверку правильности ввода типа чисел.

Разработать класс IterInt, который наследует функциональность стандартного типа int
Разработать класс IterInt, который наследует функциональность стандартного типа int, но добавляет возможность итерировать по цифрам числа ...

Разработать класс SuperStar, который следует функциональность стандартного типа str и содержит 2 новых метода:
Разработать класс SuperStar, который следует функциональность стандартного типа str и содержит 2 новых метода: 1. метод is_repeatance...

Объявить класс ConsoleNumberProvider, который реализует интерфейс INumberProvider
using System; namespace Task3_4 { interface INumberProvider { bool IsFinished(); float GetNumber(); ...

Реализовать класс Expression, который реализует интерфейс IExpression
Помогите реализовать класс Expression, который реализует интерфейс IExpression. Наследовать и реализовать от него следующие классы Под...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru