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

Стек для обработки выражений со скобками - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Выяснить, все ли буквы слова Х, стоящие на нечетных местах, различны http://www.cyberforum.ru/cpp-beginners/thread621127.html
Задание 2 Выяснить, все ли буквы слова Х, стоящие на нечетных местах, различны.
C++ Группировка контролов на форме при редактировании Нужно передвинуть несколько контролов на форме в режиме редактирования. Как их сгруппировать (выделить), чтобы не двигать по одному? Добавлено через 7 минут (не щелкая с нажатым шифтом по каждому, а выделяя прямоугольную область) http://www.cyberforum.ru/cpp-beginners/thread621118.html
Visual C++ Questions C++
1) Подскажите уроки или учебники по Microsoft Visual C++ 2010 Express. Побольше бы о том как работать с формами... https://code-live.ru/sources/cpp_manual/ - прочитал. 2) Как вывести текст на форму... Именно на форму? (Типа print в Visual Basic) 3) Дайте ссылку на какой нибудь справочник или WiKi по Visual C++... Вобщем туда, где можно узнать о библиотеках, о функциях и тд... 4) Как...
C++ Определить окружность, проходящую через k (k>=3) точек каждого из двух непересекающихся множеств
Даны два непересекающихся конечных множества точек на плоскости. Определить окружность, проходящую через k (k>=3) точек каждого из множеств. Подскажите пожалуйста как решить эту задачу, хотя бы алгоритм решения, я так думал что нужно ввести два массива двумерных размерностью в которых содержатся координаты точек потом упорядочить их как на координатной плоскости и уже искать окружность, сдесь...
C++ Ошибка с функцией http://www.cyberforum.ru/cpp-beginners/thread621063.html
Выполняю пример из книги, раздел про функции. Одно из условий здачи написать функцию для ввода массива. У меня подчеркивет в main() функцию vvod() и пишет "для агрегатного объекта требуется инициализация с использованием {...}". #include <iostream> const int size = 10; int vvod(); int main() {using namespace std; int mas = vvod(); }
C++ Не выполняется действия в функциях В программе осуществляется ввод целых чисел ( при вводе 0 происходит остановка дальнейшего ввода чисел в массив ), затем последовательность и сумма чисел массива выводятся на экран. #include <iostream> #include <locale> using namespace std; int summ(int intArray, int sizeArray); void Display(int intArray, int sizeArray); подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
09.07.2012, 01:06     Стек для обработки выражений со скобками
DaskOFF, вот твой код, доработай его немного для скобки
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
#include <iostream>
using namespace std;
 
struct Node
{
    char chr;
    Node * next;
    Node * prev;
};
 
class Stack
{
private:
    Node * pFirst;
    Node * pList;
    Node * pLast;
public:
    Stack();
    void Init(char * str);
    void Set(char ch);
    char Get();
    void Rem(char ch);
    void See();
};
 
int main()
{
    char chr = 0;//Символ для удаления
    char str[256];
    cout<<"Enter string : ";
    cin.getline(str,255);
    Stack stack;
    stack.Init(str);//Инициализируем стек
    //Печатаем стек
    stack.See();
    cout<<"Enter char   : ";cin>>chr;
    //Удаляем из списка символ chr
    stack.Rem(chr);
    //Печатаем стек
    stack.See();
    system("pause");
    return 0;
}
 
Stack::Stack()
{
    pFirst = new Node;
    pFirst->prev = NULL;
    pFirst->next = NULL;
    pLast = (pList = pFirst);
}
 
void Stack::Init(char * str)
{
    pFirst->chr = str[0];
    pLast = (pList = pFirst);
    for(int i = 1; str[i] != '\0'; i++)
        Set(str[i]);
}
 
void Stack::Set(char ch)
{
    pLast->next = new Node;
    pList = pLast->next;
    pList->prev = pLast;
    pList->chr  = ch;
    pLast = pList;
    pLast->next = NULL;
}
 
char Stack::Get()
{
    return pLast->chr;
}
 
void Stack::Rem(char ch)
{
    for(pList = pFirst; pList != NULL; pList = pList->next)
    {
        if(pList->chr == ch)
        {
            if(pList->next)//Не последний элемент
            {
                if(pList->prev)//Не первый элемент
                {
                    pLast = pList->next;
                    pList->prev->next = pLast;
                    pLast->prev = pList->prev;
                }
                else
                {
                    pFirst = pList->next;//Первый элемент
                    pFirst->prev = NULL;
                }
            }
            else//Последний элемент
                pLast = pList->prev;
        }
    }
    pLast->next = NULL;
}
 
void Stack::See()
{
    //Показываем стековые данные
    for(pList = pLast; pList != NULL; pList = pList->prev)
        cout<<pList->chr;
    cout<<endl;
}
Миниатюры
Стек для обработки выражений со скобками  
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru