Top.Mail.Ru
Ответы
Аватар пользователя
9мес
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Помогите написать программу пожалуйста на си ++

Выполнить три программных реализации полустатической структуры стек.
Найти максимальный элемент и вставить после него 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;
}

По дате
По рейтингу
Аватар пользователя
Новичок
9мес
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
 #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(); 
} 
Аватар пользователя
Мудрец
9мес

Тык читай тут

Аватар пользователя
Мудрец
9мес

По ссылке представлена реализация стека фиксированного размера при помощи класса Stack. Программа демонстрирует реализацию стека из чисел типа long, обработку ошибок ввода и простую реализацию текстового меню.
https://pastebin.com/uY83jrfZ