


Помогите написать программу пожалуйста на си ++
Выполнить три программных реализации полустатической структуры стек.
Найти максимальный элемент и вставить после него 0
1. Создать стек на основе статического массива и функций (как в теории к заданию)
2. Описать стек как структуру и функции.
3. Создать класс стек.
Требования к программе
1. Выводить меню следующего вида:
0: Печать стека
1: Добавление элемента в стек
2: Удаление элемента из стека
3: Считывание элемента из стека без удаления
4: Проверка стека на пустоту
5: Проверка стека на переполнение
6: Очистка стека
7: Действие по варианту задания
8: Выход
2. Выполнять по желанию пользователя одно из предложенных действий и запрашивать следующее действие.
3. При выполнении действия по варианту при обращении к стеку должны использоваться запрограммированные вами функции.
Вот пример программы,по -которому надо сделать
Создание стека с помощью статического массива
…………………………………………
#define MAX_SIZE 20//определяет замену в программе MAX_SIZE на 20
char s[MAX_SIZE]; //компоненты стека
int next=0; // позиция вершины стека
int Empty(); //Проверка стека на пустоту
int Full(); // Проверка стека на переполнение.
void Push(char x); // Добавление элемента в стек
void Printst(); //Печать стека
void Clear();//Очистка стека
char Pop();//Удаление элемента из стека
void Stacktop();//Считывание элемента без удаления
int main()
{
………………………………………………………………………………
вывод меню и код решения задания по варианту
(при программировании задания по варианту использовать функции работы со стеком Push, Pop и т.д.)
………………………………………………………………………………
return 0;
}
//Проверка стека на пустоту.
int Empty(){
return next==0;} //результат сравнения=1, если вершина - нулевой элемент
// Проверка стека на переполнение.
int Full() {
return next==MAX_SIZE;} //результат сравнения=1, если вершина= MAX_SIZE
//т.к. нумерация с нуля - MAX_SIZE за пределами массива
// Добавление элемента в стек
void Push(char x){
if (next==MAX_SIZE)
cout<<"Ошибка: стек полон"<<endl;
else
s[next++]=x; //добавляем элемент на вершину стека и увеличиваем вершину
}
//Печать стека
void Printst() {
if (next==0)
cout<<"Cтек пуст"<<endl;
else
//понижаем вершину и выводим элемент
do cout<<s[--next]<<" "<<endl;
while(next!=0);
}
//Очистка стека
void Clear() {
next=0;
}
//Удаление элемента из стека
char Pop() {
if (next==0) cout<<"Ошибка: стек пуст"<<endl;
else {
next--;
return s[next];
}
}
// Считывание элемента из стека без удаления
void Stacktop() {
if (next==0) cout<<"Ошибка: стек пуст"<<endl;
else cout<<s[next-1]<<endl;
}
#include <iostream>
using namespace std;
template<typename T, size_t Buffer>
class Stack {
public:
int empty() const {
return length == 0;
}
bool full() const {
return Buffer <= length;
}
void push(const T& value) {
stack[length++] = value;
}
void printst() {
for (size_t i = 0; i < length; ++i) {
cout << stack[i] << '\n';
}
}
void clear() {
length = 0;
}
T pop() {
return stack[--length];
}
const T& top() const {
return stack[length - 1];
}
private:
size_t length;
T stack[Buffer];
};
int main() {
Stack<char, 20> stack{};
if (!stack.full()) stack.push('a');
if (!stack.full()) stack.push('b');
if (!stack.full()) stack.push('c');
stack.printst();
puts("--");
if (!stack.empty()) stack.pop();
stack.printst();
puts("--");
stack.clear();
stack.printst();
puts("--");
cin.get();
}
Тык читай тут
По ссылке представлена реализация стека фиксированного размера при помощи класса Stack. Программа демонстрирует реализацию стека из чисел типа long, обработку ошибок ввода и простую реализацию текстового меню.
https://pastebin.com/uY83jrfZ