С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 28.02.2019
Сообщений: 3
1

переворот стека

28.02.2019, 15:32. Показов 2541. Ответов 1

Author24 — интернет-сервис помощи студентам
есть стек. нужно сделать функцию переворота стека со дна на вершину
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
#include "stdafx.h"
#include <iostream> 
#include <stack> 
#include <ctime>
#include<algorithm>
using namespace std;
 
stack<int> s; //Створюємо стек під назвою S
 
void Empty() /*Перевіряємо, чи стек не порожній*/ {
    if (s.empty()) // де s - назва стека, empty - повертає значення true, якщо стек пустий
        cout << "Стек порожнiй!\n";
    else cout << "Стек не порожнiй!\n";
}
void Pop() /*Видаляємо останній елемент із стека*/ {
    if (s.empty())
        cout << "Стек порожнiй!\n";
    else
        s.pop(); // s - назва стека, pop - видалення останнього елемента
}
void Push() /*Додаємо елемент в стек*/ {
    int n;
    cout << "Введiть число: ";
    cin >> n;
    system("cls");
    s.push(n); // s - назва стека, push - додавання елемента в стек
}
void ShowD()/*Перегляд стеку із видаленням елементів*/ {
    if (s.empty())
        cout << "Стек порожнiй!\n";
    else{
        cout << "Ваш стек: ";
        while (!s.empty()) {
            cout << s.top() << " "; // s - назва стека, top - вершина стека
            s.pop();
        }
        cout << endl;
    }
}
void Rand() /*Додати 10 випадкових чисел в стек від 1 до 10 (Для швидкого заповнення стека)*/ {
    int a = 0;
    srand(time(NULL));
    for (int i = 10; i >= 1; i--) {
        a = rand() % 11; // де а - випадкове число від 0 до 10
        s.push(a);
    }
}
void delete_max() {
    if (s.empty())
        cout << "Стек порожнiй!\n";
    else {
        int max_one = s.top();
        stack<int> temp;
 
        while (!s.empty()) {
            max_one = max(max_one, s.top());
 
            temp.push(s.top());
            s.pop();
        }
 
        while (!temp.empty()) {
            if (temp.top() != max_one)
                s.push(temp.top());
 
            temp.pop();
        }
    }
}
void Top()/*Вивід останнього елемента*/ {
    if (s.empty())
        cout << "Стек порожнiй!\n";
    else
        cout << s.top() << "\n";
}
void Show()/*Перегляд стеку без видалення*/ {
    if (s.empty())
        cout << "Стек порожнiй!\n";
    else {
 
        stack<int>temp;
 
        cout << "Ваш стек: ";
        while (!s.empty()) {
 
            temp.push(s.top());
            cout << s.top() << " ";
            s.pop();
        }
 
        while (!temp.empty()) {
            s.push(temp.top());
 
            temp.pop();
        }
 
        cout << endl;
    }
}
void Clear() /*Очистка стека*/ {
    if (s.empty())
        cout << "Стек порожнiй!\n";
    else
        for (int i = 0; i < s.size() + 1; i++)
            s.pop();
}
void menu()/* Меню :) */ {
    cout << "1: Додати новий елемент\n";
    cout << "2: Видалити останнiй елемент\n";
    cout << "3: Додати 10 випадкових чисел в стек\n";
    cout << "4: Показати стек (з видаленням елементiв!)\n";
    cout << "5: Перевiрити чи стек не пустий\n";
    cout << "6: Видалити максимальний елемент\n";
    cout << "7: Показати останнiй елемент\n";
    cout << "8: Показати стек (без видiлення елементiв)\n";
    cout << "9: Очистити стек\n";
    cout << "0: Вихiд\n";
}
int main() {
    setlocale(LC_ALL, "ukr");
    char key;
    do {
        menu();
        cin >> key;
        system("cls");
        switch (key)
        {
        case '1': Push();
            break;
        case '2': Pop();
            break;
        case '3': Rand();
            break;
        case '4': ShowD();
            break;
        case '5': Empty();
            break;
        case '6': delete_max();
            break;
        case '7': Top();
            break;
        case '8': Show();
            break;
        case '9': Clear();
            break;
        case '0': exit(1);
        }
    } while (key != 0);
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.02.2019, 15:32
Ответы с готовыми решениями:

Структура стек (: добавить элемент в стек, удалить элемент из стека, получить значение с вершины стека, размер стека...)
Всем привет,ребят помогите пожалуйста с лабой,вообще без понятия про стеки:( Может кто то...

Удалить элемент из стека по условию и добавить элемент в начало стека
Здравствуйте, помогите пожалуйста исправить(дописать) программы. 1). Нужно удалить элемент,...

Переворот строки
Ребят,у меня есть 2 часа чтоб понять!УМОЛЯЮ, помогите...объясните в этой функции( которая...

Переворот слов
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;sstream&gt; int main() { std::string input;...

1
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,162
28.02.2019, 19:16 2
Лучший ответ Сообщение было отмечено Valentine888 как решение

Решение

C++
1
2
3
4
5
6
7
8
9
stack<int> temp;
 
while (!s.empty()) {
  temp.push(s.top());
 
  s.pop();
}
 
s = temp;
1
28.02.2019, 19:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.02.2019, 19:16
Помогаю со студенческими работами здесь

Переворот строки
Почему при использовании указателя ошибка, а при использование массива всё нормально? void...

Переворот числа
Приветствую. Собственно написать через строку или арифметический тип сложности не представляет,...

Переворот масива
Здравствуйте. Помагите пожалучто, у меня как то криво масив переворачиваетса... #include...

Двойной переворот
помогите переписать на c++, это Delphi. {$APPTYPE CONSOLE} uses SysUtils; var x:array of...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru