Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
sheill
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 54
#1

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

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

Нужно написать программу, которая формирует стек, после удаляет минимальный элемент и выводит стек на экран.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2011, 14:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Стек и работа с ним (C++):

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

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

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

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

Создание файла и работа с ним - C++
Подскажите как создать .txt файл и заполнить его любыми символами до нужного размера, размер файла вводится пользователем

Формирование списка и работа с ним - C++
Задали написать программу на с++. Написал её, а точнее составил из разных кусков, которые были даны на семинаре. Программа работает, но ,к...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
29.09.2011, 15:25 #2
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
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
29.09.2011, 15:53 #3
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2011, 15:53
Привет! Вот еще темы с ответами:

Массив произвольной размерности и работа с ним - C++
Доброго времени суток. Появилась интересная задача: создать функцию для создания массива, размерность которого укажут в ходе программы(то...

Односвязный линейны список (работа с ним) - C++
Очень нужна ваша помощь переделал немного односвязный список (спасибо Vasiliusis) вот код #include &lt;iostream&gt; #include...

Порождение нового процесса и работа с ним - C++
Помогите разработать программу, вычисляющую плотность распределения Пуассона с параметром lambda в точке k (k - целое) по формуле...

Создание своего архива и работа с ним - C++
Здравствуйте форумчане! Вопрос таков: можно ли создать свой архив, наподобе какого-нибудь *.pak, чтобы работать с ним могла только моя...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru