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

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

Войти
Регистрация
Восстановить пароль
 
Профан
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 49
#1

Со стеком запутался - C++

27.10.2011, 16:01. Просмотров 406. Ответов 6
Метки нет (Все метки)

Как сделать чтоб это заработало
Компилирую на CodeBlocks (если есть лучше предлагайте)

Код
#include <iostream>
#include <string.h>

template <class Item>
class STACK
{
    private:
    public:
     STACK(int);
     int empty() const;
     void push(Item item);
     Item pop;
};

int main(int argc, char *argv[])
{
    char *a = argv[1]; int N = strlen(a);
    STACK<int> save(N);
    for (int i = 0; i < N; i++)
     {
         if(a[i] == '+')
           save.push(save.pop() + save.pop());
         if(a[i] == '*')
           save.push(save.pop() * save.pop());
         if((a[i] == '0') && (a[i] <= '9'))
           save.push(0);
         while ((a[i] == '0') && (a[i] <= '9'))
           save.push(10*save.pop() + (a[i++]-'0'));
     }
     cout<<save.pop() <<endl;
}

И подскажите задание слегка не пойму:

Реализовать программу-клиента, использующую АТД Стек и Очередь
реализовать на базе массива и на базе связного списка
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2011, 16:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Со стеком запутался (C++):

Проблема со стеком - C++
В общем, в книге нашёл задание: Напишите программу, которая добавляет и удаляет структуры в стек. Каждый раз когда удаляется запись о...

Знакомство со стеком - C++
Начал изучать принципы работы стека вроде все понятно но не пойму как реализовать такое действие. Задача: Есть динамический класс User...

Работа со стеком - C++
Ребят, помогите пожалуйста с заданиями: Задание 1 Реализовать стек списком. Все стандартные операции со стеком должны быть...

Работа со стеком - C++
Создать программу, реализовав работу со структурой данных - стеком. В программе реализовать добавление и удаление элементов.

Работа со стеком - C++
Привет всем. Помогите пожалуйста написать прогу. Постороить класс для работы со стеком.Элементы стека -целое число. Ввести две...

Работа со стеком - C++
Задача: Написать программу которая создает стек целых чисел считываемых из файла и удаляет из него повторяющиеся числа. Вывести элементы...

6
PointsEqual
ниначмуроФ
837 / 521 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
27.10.2011, 16:08 #2
реализация методов нужна

C++
1
2
3
4
5
6
7
8
9
10
11
12
using namespace std;
 
template <class Item>
class STACK
{
    private:
    public:
     STACK(int){};
     int empty() const{};
     void push(Item item){};
     Item pop(){};
};
1
Профан
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 49
27.10.2011, 16:13  [ТС] #3
Спасибо тебе огромное
С заданием поможешь

И подскажите задание слегка не пойму:

Реализовать программу-клиента, использующую АТД Стек и Очередь
реализовать на базе массива и на базе связного списка
0
alkagolik
Заблокирован
27.10.2011, 16:16 #4
все уже давно реализовано. тырц
0
PointsEqual
ниначмуроФ
837 / 521 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
27.10.2011, 16:21 #5
http://www.cyberforum.ru/cpp-beginne...ead178335.html
0
Профан
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 49
27.10.2011, 16:51  [ТС] #6
Как думаете это можно назвать Стек на базе массива

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
        #include "StackLi.h"
        #include <iostream.h>
 
        
        template <class Object>
        class Stack
        {
          public:
            explicit Stack( int capacity = 10 );
 
            bool isEmpty( ) const;
            bool isFull( ) const;
            const Object & top( ) const;
 
            void makeEmpty( );
            void pop( );
            void push( const Object & x );
            Object topAndPop( );
 
          private:
            vector<Object> theArray;
            int            topOfStack;
        };
        
        /**
         * Construct the stack.
         */
        template <class Object>
        Stack<Object>::Stack( )
        {
            topOfStack = NULL;
        }
 
        /**
         * Copy constructor.
         */
        template <class Object>
        Stack<Object>::Stack( const Stack<Object> & rhs )
        {
            topOfStack = NULL;
            *this = rhs;
        }
 
        /**
         * Destructor.
         */
        template <class Object>
        Stack<Object>::~Stack( )
        {
            makeEmpty( );
        }
 
        /**
         * Test if the stack is logically full.
         * Return false always, in this implementation.
         */
        template <class Object>
        bool Stack<Object>::isFull( ) const
        {
            return false;
        }
 
        /**
         * Test if the stack is logically empty.
         * Return true if empty, false otherwise.
         */
        template <class Object>
        bool Stack<Object>::isEmpty( ) const
        {
            return topOfStack == NULL;
        }
 
        /**
         * Make the stack logically empty.
         */
        template <class Object>
        void Stack<Object>::makeEmpty( )
        {
            while( !isEmpty( ) )
                pop( );
        }
 
        /**
         * Get the most recently inserted item in the stack.
         * Return the most recently inserted item in the stack
         * or throw an exception if empty.
         */
        template <class Object>
        const Object & Stack<Object>::top( ) const
        {
            if( isEmpty( ) )
                throw Underflow( );
            return topOfStack->element;
        }
 
        /**
         * Remove the most recently inserted item from the stack.
         * Exception Underflow if the stack is empty.
         */
        template <class Object>
        void Stack<Object>::pop( )
        {
            if( isEmpty( ) )
                throw Underflow( );
 
            ListNode *oldTop = topOfStack;
            topOfStack = topOfStack->next;
            delete oldTop;
        }
 
        /**
         * Return and remove the most recently inserted item
         * from the stack.
         */
        template <class Object>
        Object Stack<Object>::topAndPop( )
        {
            Object topItem = top( );
            pop( );
            return topItem;
        }
 
        /**
         * Insert x into the stack.
         */
        template <class Object>
        void Stack<Object>::push( const Object & x )
        {
            topOfStack = new ListNode( x, topOfStack );
        }
 
        /**
         * Deep copy.
         */
        template <class Object>
        const Stack<Object> & Stack<Object>::
        operator=( const Stack<Object> & rhs )
        {
            if( this != &rhs )
            {
                makeEmpty( );
                if( rhs.isEmpty( ) )
                    return *this;
 
                ListNode *rptr = rhs.topOfStack;
                ListNode *ptr  = new ListNode( rptr->element );
                topOfStack = ptr;
 
                for( rptr = rptr->next; rptr != NULL; rptr = rptr->next )
                    ptr = ptr->next = new ListNode( rptr->element );
            }
            return *this;
        }
0
fasked
Эксперт С++
4951 / 2531 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
27.10.2011, 16:56 #7
Цитата Сообщение от Профан Посмотреть сообщение
topOfStack = NULL;
topOfStack не указатель. Да и вообще в C++ лучше не использовать NULL.
0
27.10.2011, 16:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2011, 16:56
Привет! Вот еще темы с ответами:

Работа со СТЕКОМ!!!!!!:) - C++
Создать класс для работы со стеком. Элемент стека – символ. --- Сформировать два стека,содержащие последовательности символов. ---...

Работа со стеком - C++
Помогите исправить ошибки! Пусть символ # определен в текстовом редакторе как стирающий символ Backspace, т.е. строка abc#d##c в...

Работа со стеком. - C++
Интересует вопрос: для использовония функций pop() и push() нужно ли подключать заголовочный файл из стандартной библиотеки?

Работа со стеком! - C++
Необходимо записать заполнение стека с клавиатуры. Добавлено через 44 секунды #include &lt;iostream&gt; #include &lt;stack&gt; int main...


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

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

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