Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
1 / 1 / 0
Регистрация: 20.11.2015
Сообщений: 12
1

Написать парсер текста, проверяющий правильность расстановки скобок, используя стек и файловый ввод/вывод

26.12.2015, 15:56. Показов 2061. Ответов 2
Метки нет (Все метки)

Дан текстовый файл INPUT.TXT. Проверить в тексте файла правильности расстановки открывающих и закрывающих скобок ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[‘, ‘]’. Использовать стек. Результат (ПРАВИЛЬНО или НЕПРАВИЛЬНО) записать в файл OUTPUT.TXT.
Пример:
INPUT.TXT
Лвыо(лдв)дло((влдо)лоады)щ{{df}]
OUTPUT.TXT
НЕПРАВИЛЬНО.
Без стека программу написал, а работать со стеком не получается. Помогите с написанием программы
0

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

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.12.2015, 15:56
Ответы с готовыми решениями:

Проверить правильность расстановки и вложенности скобок в тексте (абстрактный стек)
реализовать с помощью связного списка...

Написать парсер строк (файловый ввод/вывод)
Здравствуйте! Подскажите, пожалуйста, каким образом можно считать числа из такого файла: Я...

Написать парсер/счётчик строк (файловый ввод/вывод)
Ребята проблема такова , код ниже должен высчитывать количество логических строк в файле , пустых...

Написать парсер, разделяющий строки на подстроки (файловый ввод/вывод)
Подкиньте пожалуйста идей для решения задачи

2
503 / 315 / 236
Регистрация: 18.02.2013
Сообщений: 754
26.12.2015, 16:16 2
вот здесь посмотрите
0
824 / 627 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
26.12.2015, 19:49 3
Лучший ответ Сообщение было отмечено wohorogov как решение

Решение

Вот набросал по примитивному.
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 <sstream>
#include <fstream>
#include <stack>
 
void test_branch(std::ostream& _out, std::istream& _in){
    std::stack<char> st;
    char c;
    int  r = 1;
 
    while(_in.get(c) && !_in.fail()){
        if(c == '\n' || c == '\r')
            break;
        else if(c == '[' || c == '(' || c == '{')
            st.push(c);
        else if(c == ']' || c == ')' || c == '}'){
            if(st.empty()){
                r = 0;
                break;
            }
            if(st.top() == '(' && c == ')' || 
               st.top() == '[' && c == ']' ||   
               st.top() == '{' && c == '}')
                st.pop();
            else {
                r = 0;
                break;
            }
        }
    }
 
    if(! st.empty())
        r = 0;
    _out << ((r) ? "ПРАВИЛЬНО." : "НЕПРАВИЛЬНО.") << std::endl;
}
 
int main(void) {
    //с консоли
    test_branch(std::cout, std::cin);
 
/*  со строкового-потока
    char s[] = "Лвыо(лдв)дло((влдо)лоады)щ{{df}]";
    std::istringstream sp(s);
    test_branch(std::cout, sp);
*/
 
/*  из файла
    std::ifstream fin("intput.txt");
    std::ofstream fout("output.txt");
    test_branch(fout, fin);
    fin.close();
    fout.close();
*/
    return 0;
}
Пример работы кода
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.12.2015, 19:49

Написать рекурсивную функцию, проверяющую правильность расстановки круглых скобок в строке
Написать рекурсивную функцию, проверяющую правильность расстановки круглых скобок в данной строке.

Правильность расстановки скобок
Всё обыскал но никак не могу найти именно то, что мне нужно, а именно: Со всем в принципе...

Маленький стек и файловый ввод вывод
Задачка - вынос мозга... Итак у нас имеется стек: class Stack { private: int top; static...

Проверить правильность расстановки скобок
Помогите написать программу на c++. Дана строка, содержащая латинские буквы и скобки трех видов:...


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

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

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