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

Стек и работа с ним

29.09.2011, 14:49. Показов 1373. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно написать программу, которая формирует стек, после удаляет минимальный элемент и выводит стек на экран.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.09.2011, 14:49
Ответы с готовыми решениями:

Стек и работа с ним
Добрый вечер! Мне дали задания: 1. Написать функцию для удаления всех элементов с четными номерами из односвязного списка 2....

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

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

2
 Аватар для Mиxaил
542 / 447 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
29.09.2011, 15:25
Лучший ответ Сообщение было отмечено sheill как решение

Решение

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
#include <iostream>
#include <stack>
 
int main ()
{
    std::stack < int > mystack;
    int arr [] = { 1, 9, -2, 3, 8, 0 }, min = arr [ 0 ];
 
    for ( int index = 0; index < sizeof ( arr ) / sizeof ( *arr ); index++ )
    {
        if ( arr [ index ] < min )
            min = arr [ index ];
        mystack.push ( arr [ index ] );
    }
 
    while ( !mystack.empty() )
    {
        if ( mystack.top () != min )
            std::cout << mystack.top () << " ";
        mystack.pop();
    }
 
    std::cin.get();
    return 0;
}
2
 Аватар для talis
794 / 546 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
29.09.2011, 15:53
Mиxaил, спасибо, не знал об std::stack

Если своими руками:

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
152
153
154
155
156
157
158
#include <iostream>
#include <iomanip>
#include <string>
#include <cstring>
#include <algorithm>
 
using namespace std;
 
class CStack
{
public:
    CStack( size_t size = 16 );
    ~CStack();
 
    bool push( int );
    int pop();
 
    size_t getUsed();
    size_t getSize();
 
    bool resize( size_t new_size );
 
    int findMin();
 
private:
    int * data;
    size_t used;
    size_t size;
};
 
CStack::CStack( size_t _size )
: used( 0 ), size( _size )
{
    data = new int[ _size ];
}
 
CStack::~CStack()
{
    delete [] data;
}
 
bool CStack::push( int val )
{
    if( used < size )
    {
       data[ used++ ] = val;
       return true;
    }
    else
       return false;
}
 
int CStack::pop()
{
    if( used )
        return data[--used];
 
    return 0;
}
 
size_t CStack::getUsed()
{
    return used;
}
 
size_t CStack::getSize()
{
    return size;
}
 
int CStack::findMin()
{
    return *std::min_element( &data[0], &data[used] );
}
 
bool CStack::resize( size_t new_size )
{
    if( new_size <= 0 )
       return false;
 
    int * temp = new int[ new_size ];
 
    if( !temp )
       return false;
 
    memcpy( temp, data, sizeof( int ) * min( new_size, size ) );
 
    if( used > new_size )
       used = new_size;
 
    size = new_size;
 
    delete [] data;
    data = temp;
 
    return true;
}
 
int main( )
{
    CStack stack;
    string str;
    int in;
 
    while(1)
    {
        cout << "] ";
        cin >> str;
 
        if( str == "push")
        {
           cin >> in;
 
           if( !stack.push( in ) )
              cout << "stack is full\n\n";
        }
        else if( str == "pop" )
        {
            if( stack.getUsed() )
                cout << stack.pop() << "\n\n";
            else
                cout << "stack is empty\n\n";
        }
        else if( str == "resize" )
        {
            cin >> in;
 
            if( !stack.resize( in ) )
                cout << "error\n\n";
        }
        else if( str == "getUsed" )
            cout << stack.getUsed() << "\n\n";
        else if( str == "getSize" )
            cout << stack.getSize() << "\n\n";
        else if( str == "findMin" )
            cout << stack.findMin() << "\n\n";
        else if( str == "popUntilMin" )
        {
            int min_val = stack.findMin();
            int poped = 1;
 
            while( stack.getUsed() && min_val != stack.pop() )
                poped++;
 
            cout << "poped " << poped << " values\n\n";
        }
        else if( str == "help" )
            cout << "push [num], pop, resize [num], getUsed, getSize, findMin, popUntilMin, help, quit\n\n";
        else if( str == "quit" )
            break;
        else
            cout << "what?\n\n";
    }
 
    cout << "Goodbye!" << endl;
 
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.09.2011, 15:53
Помогаю со студенческими работами здесь

Стек и операции с ним - проверка кода на корректность
Необходимо реализовать стек на С#(считывание без извлечения элемента стека, считывание с извлечением элемента стека, запись элемента в...

Реализовать стек и 3 оператора для работы с ним
Доброго времени суток! Помогите, есть такая задача: Реализовать стек и 3 оператора для работы с ним (Push (x, S), Locate (х, S),...

Организовать стек из однородного массива и реализовать действия с ним
Здравствуйте, я только что зарагестрировался на форуме и не знаю всех правил, так что прошу простить, если что не так делаю. А задача...

Как можно создать стек и производить операции над ним?
Как можно создать стек и производить операции над ним? Читал различную литературу, но хорошего объяснения так и не нашел. Где-то пишут, что...

Массив: С помощью одномерного массива организовать стек и реализовать набор команд для работы с ним...
С помощью одномерного массива организовать стек и сделать следующие действия с ним: Элементами стека являются слова не более чем из 20...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru