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

Найти порядковый номер первой скобки, что нарушает баланс скобок в выражении

22.05.2020, 09:56. Показов 428. Ответов 0

Студворк — интернет-сервис помощи студентам
Общая задача была: найти баланс скобок, я его нашел, но со вторым заданием, а именно: найти порядковый номер откуда начинается нарушение баланса при неправильном ответе - туплю сильно. Можете подсказать алгоритм или продемонстрировать код решения? Пытался через каунтеры как-нибудь, через 2 дополнительных стака - не вышло.
Мой файл mathematics.txt:
{([)}]
((())
((4-2)+1=3
{100-[[35-(30-20]}*2
(4-{2})+1=3
((33))+1=34
(a+b)(a+b)=(a+b)^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
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
#include <iostream>
#include <stack>
#include <string>
#include <fstream>
#include <windows.h>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    stack <char> stk;
    stack <char> PushStk, PopStk;
    char rLeft = '(', rRight = ')', sLeft = '[', sRight = ']', fLeft = '{', fRight = '}';
    string InPath = "E:\\mathematics.txt";
    string OutPath = "E:\\control.txt";
    string s;
    ifstream fin(InPath);
    ofstream fout(OutPath);
    while (fin >> s)
    {       
        while (!stk.empty())
        {
            stk.pop();
        }       
            for (int i = 0; i < s.size(); i++)
            {               
                if (s[i] == rLeft || s[i] == sLeft || s[i] == fLeft)
                {
                    stk.push(s[i]);
                }
                
                else
                    if (s[i] == rRight && stk.top() == rLeft || s[i] == sRight && stk.top() == sLeft || s[i] == fRight && stk.top() == fLeft)
                    {   
                        if (stk.size() > 0)
                        {
                            stk.pop();                          
                        }
                    }               
            }                       
            
        if (stk.empty())
            fout << s << " - верно" << endl;
        else
        {
            fout << s << " - неверно" << endl;
        }           
 
    }
    fin.close();
    fout.close();   
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.05.2020, 09:56
Ответы с готовыми решениями:

Проверить баланс скобок в выражении
Проверить баланс скобок в арифметическом выражении по следующему алгоритму:сравнивать по очереди каждый символ с&quot;(&quot; и...

Баланс скобок в математическом выражении
В математическом выражении встречаются скобки трех типов: круглые, квадратные и фигурные Дана строка, задающая математическое выражение....

Проверить баланс круглых скобок в символьном выражении
Помогите пожалуйста написать программку (только, чтобы было понятно, а то я начинающий :) ) Дана последовательность символов длины n (n...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.05.2020, 09:56
Помогаю со студенческими работами здесь

Проверить баланс скобок в арифметическом выражении по следующему алгоритму
Проверить баланс скобок в арифметическом выражении по следующему алгоритму. Сравнить по очереди каждый символ с “(“ и с “)”. Если...

Баланс открывающих и закрывающих скобок в выражении (Перевод программы в процедуру)
program Balance; uses crt; var s: string; dlina, flag, i : integer; begin clrscr; write('Введите текст: '); ...

Найти порядковый номер первой / последней буквы е в предложении
Дано предложение, в котором имеются несколько букв е. Найти: •порядковый номер первой из них; •порядковый номер последней из них.

Найти порядковый номер первой буквы из заданных в предложении
Дано предложение, в котором имеются несколько букв e. Найти: а) порядковый номер первой из них; б) порядковый номер последнего из...

Предложение, в которых есть несколько букв. Найти порядковый номер первой из них
имеем предложение, в которых есть несколько букв...надо найти: а) порядочный номер первой из них; б) порядочный номер последней из них.


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru