Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Одинаковые буквы в одном слове на Borland C++ https://www.cyberforum.ru/ cpp/ thread216985.html
Помогите пожалуйста решить задачу на Borland C++ "В строке слов из букв латинского алфавита найти слова, в которых первая буква слова входит еще хотя бы раз. "
Рассмотрите интересный пример,нашел на свою голову! C++
задали что поинтереснее но немогу решить,окажите помощ: Необходимо создать класс вектор. Члены данные класса - 3 прямоугольные декартовые координаты. Члены функции класса - конструктор,метод...
C++ Как заблокировать файл на время чтения/записи? https://www.cyberforum.ru/ cpp/ thread216723.html
Как сделать такое? Чтоб другие программы не могли в этот момент писать в этот файл?
C++ Необходим подсчёт количества тактов в сети фейстеля https://www.cyberforum.ru/ cpp/ thread216431.html
дан исходник http://file.qip.ru/file/Rc7F-xO9/jetcrypt.html нужно посчитать количество тактов в программе,выяснить,возможно ли выполнение программы на микроконтроллерах и какая частота процессора...
C++ Кеширование сетевого диска
Необходима помощь в написании/поиске исходников программы кеширования сетевого диска. 1-ый год изучаем С++, а задали такой курсак.
C++ C++ задания https://www.cyberforum.ru/ cpp/ thread215177.html
Вообщем было поручено сделать 5 задачь 3 сделал,но на счёт правильности не уверен! Вот условия тех задач которые я написал: В вложениях "Безымянный.JPG" Вот код: #include <iostream> #include...
C++ Проверка чисел на С https://www.cyberforum.ru/ cpp/ thread215099.html
Нужна программа: Условие: Когда ввожу 123 или -123 на екран выводило что ето число, а когда 123а 4325 виводило что ето текст . Ввод даных в типе char. Заранее благодарен.
C++ вопрос
Есть код программы , в конце программы должен запрашеватся вопрос , продолжить выполнения программы да/нет если "да" то программа начинается сначала !если "нет" закрывается ! Напишите код плз !
C++ Заполненые матрицы на С Условие: Заполнить матрицу значениями вектора b1, b2, ... , b81 от левого верхнего угла по спиралi: вправо - вниз - влево - вверх. https://www.cyberforum.ru/ cpp/ thread214796.html C++ метод рунге-кутта 2 порядка y' = exp(x+y) y(-1) = 0 Нужно написать программу, для метода рунге-кутта 2 порядка. Для первого порядка, я нашёл алгоритм и справился, а вот это уравнение не могу решить :( подскажите алгоритм... https://www.cyberforum.ru/ cpp/ thread214666.html
Блок-Схемы C++
Доброго временя суток, знатоки) У меня вопрос-можно ли устроить рисовку блок-схемы используя данные которые достает программа?(В программе для разбора должны присутствовать только ф-ции main, for,...
C++ задержка https://www.cyberforum.ru/ cpp/ thread213649.html
#include<iostream> int main() { char title; cin>>title; cout<<"dlina texta="; cout<<title; int c; cin>>c; cout<<c; }
Эксперт С++
5824 / 3475 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
22.12.2010, 12:56 0

[C++] Синтаксис скобок - C++ - Ответ 1227490

22.12.2010, 12:56. Показов 6639. Ответов 1
Метки (Все метки)

Ответ

Алгоритм следующий. Пока просматриваемая строка не пуста:
  1. если очередной символ - открывающая скобка, помещаем ее в стек и переходим к следующему символу;
  2. если очередной символ закрывающая скобка:
    1. если стек пуст, то выражение - неправильное;
    2. если символ на вершине стека не является соответствующей открывающей скобкой, то выражение - неправильное;
    3. в противном случае, вынимаем из стека символ.
    Переходим к следующему символу
  3. если очередной символ не является символом скобки, то переходим к следующему символу.
Если после просмотра всего выражения стек пуст, то выражение - правильное, в противном случае - неправильное.
Вот пример программы:
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
#include <stdio.h>
#include <stdlib.h>
 
struct stack
{
    char            data;
    struct stack*   next;
};
 
struct stack*   push(struct stack*, char);
char            pop(struct stack**);
void            del(struct stack**);
 
char openingP(char);
int checkP(const char*);
 
int main(int argc, char** argv)
{
    if(argc == 1)
    {
        fprintf(stderr, "Использование: %s Выражение...\n", argv[0]);
        exit(1);
    }
    
    for(size_t i = 1; i < argc; ++i)
        printf("Расстановка скобок в выражении \'%s\': %s\n",
                argv[i], (checkP(argv[i]) ? "правильная" : "неправильная"));
                
    exit(0);
}
 
struct stack* push(struct stack* stk, char c)
{
    struct stack* newNode;
    if(!(newNode = (struct stack*) malloc(sizeof(struct stack))))
    {
        fprintf(stderr, "malloc: не удалось выделить память под узел стека\n");
        exit(2);
    }
    newNode->data = c;
    newNode->next = stk;
    return newNode;
} 
 
char pop(struct stack** stk)
{
    if(!stk)
    {
        fprintf(stderr, "pop: стек уже пуст\n");
        exit(3);
    }
    char retVal = (*stk)->data;
    struct stack* delNode = *stk;
    *stk = (*stk)->next;
    free(delNode);
    return retVal;
}
 
void del(struct stack** stk)
{
    while(*stk)
    {
        struct stack* delNode = *stk;
        *stk = (*stk)->next;
        free(delNode);
    }
}
 
char openingP(char c)
{
    switch(c)
    {
    case '}':
        return '{';
    case ')':
        return '(';
    case '>':
        return '<';
    }
    return 0;
}
 
int checkP(const char* str)
{
    struct stack* stk = NULL;
    while(*str)
    {
        if((*str == '{') || (*str == '(') || (*str == '<'))
            stk = push(stk, *str++);
        else if((*str == '}') || (*str == ')') || (*str == '>'))
        {
            char o = openingP(*str++);
            
            if(stk == NULL)
                return 0;
            else if(pop(&stk) != o)
            {
                del(&stk);
                return 0;
            }
        }
        else
            ++str;
    }
    if(stk != NULL)
    {
        del(&stk);
        return 0;
    }
    return 1;
}
И пример использования:
Bash
1
2
3
4
5
nameless@nameless-desktop:~/foo$ ./foo '()(})' '({(dv<df>)}kd<{v}>d)' '(o{}' ')'Расстановка скобок в выражении '()(})': неправильная
Расстановка скобок в выражении '({(dv<df>)}kd<{v}>d)': правильная
Расстановка скобок в выражении '(o{}': неправильная
Расстановка скобок в выражении ')': неправильная
nameless@nameless-desktop:~/foo$


Вернуться к обсуждению:
[C++] Синтаксис скобок C++
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.12.2010, 12:56
Готовые ответы и решения:

Вывести все корректные комбинации пар круглых скобок, которые можно сформировать из n скобок
Вывести все корректные комбинации пар круглых скобок, которые можно сформировать из n скобок,...

Синтаксис, скобки, приоритеты, ассоциативность - уменьшить количество скобок в строке кода
вопрос прост, как уменьшить количество скобок в выражении? (int(Char.MaxValue) =...

Проверить правильность расстановки в строке скобок (баланс открывающих и закрывающих скобок)
помогите с решением задачи. Запросить у пользователя ввод значений согласно варианту. Выполнить...

Как перевести синтаксис макроса VBA (Excel) в синтаксис Visual FoxPro
Здравствуйте! Скажите пожалуйста, как перевести синтаксис записанного макроса в excel в синтаксис...

1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.12.2010, 12:56
Помогаю со студенческими работами здесь

Как перевести синтаксис Intel в синтаксис AT&T? (ассемблерная вставка в СИ)
Извиняюсь, что, возможно, пишу не в ту тему. Нужен именно AT&amp;T синтаксит. В качестве примера для...

Ввести произвольный текст. Проверить, в заданном тексте количество открытых скобок равно количеству закрытых скобок.
Помогите сделать задачу: Ввести произвольный текст. Проверить, в заданном тексте количество...

Внести произвольный текст. Проверить в заданном тексте количество открытых скобок равно числу закрытых скобок
Внести произвольный текст. Проверить в заданном тексте количество открытых скобок равно числу...

Удалить часть текста, заключённую в скобки вместе со скобками. Внутри каждой пары скобок нет других скобок.
1. Удалить часть текста, заключённую в скобки вместе со скобками. Внутри каждой пары скобок нет...

1.В заданном предложении проверить парность расстановки круглых скобок. Вложение скобок допускается. 2. Заданы два массива A и B одинаковой размерност
1.В заданном предложении проверить парность расстановки круглых скобок. Вложение скобок...

Чтение скобок внутри скобок
=(RelativeTime (Float) = 0.00,Color (Color) = (R=255,G=255,B=255,A=255),) Короче из скобок надо...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru