+ Ответить в теме
Показано с 1 по 6 из 6

Тема: Проверка правильности расстановки скобок - C++

  1. #1
    Kateeeeeeee is on a distinguished road
    Регистрация
    04.01.2018
    Сообщений
    1
    Вес репутации
    0

    По умолчанию Проверка правильности расстановки скобок - C++

    Помогите, пожалуйста, в написании счетчика скобок. Только новичок в программирование. Что-то пыталась сделать . Начало программы выглядит так. В вектор записывается выражение со скобками (например: {{a|c}f{s|g}}) и оно должно проверяться на правильность расстановки скобок.
    Код cpp:
    1. #include<iostream>
    2. #include<vector>
    3. #include<string>
    4.  
    5. int main(){
    6. setlocale(LC_ALL, "");
    7. int rb = -1;
    8. int lb = -1;
    9. int k;
    10. std::cout << "Введите размер:";
    11. std::cin >> k;
    12. std::cout << "Введите строку";
    13. std::vector<char> myVector(k);
    14. for (int i = 0; i < myVector.size(); i++){
    15. std::cin >> myVector[i];
    Последний раз редактировалось Romeo; 04.01.2018 в 23:52. Причина: [code=cpp][/code]

  2. По умолчанию

     
    Хотите избавиться от рекламы? Зарегистрируйтесь
  3. #2
    Moderator Куратор
    system architect
    Absurd is on a distinguished road
    Регистрация
    26.02.2004
    Адрес
    Pietari, Venäjä
    Возраст
    38
    Сообщений
    1,213
    Вес репутации
    17

    По умолчанию Re: Проверка правильности расстановки скобок - C++

    2B OR NOT(2B) = FF

  4. #3
    Moderator Куратор
    system architect
    Absurd is on a distinguished road
    Регистрация
    26.02.2004
    Адрес
    Pietari, Venäjä
    Возраст
    38
    Сообщений
    1,213
    Вес репутации
    17

    По умолчанию Re: Проверка правильности расстановки скобок - C++

    2B OR NOT(2B) = FF

  5. #4
    Moderator Куратор
    system architect
    Romeo is on a distinguished road Аватар для Romeo
    Регистрация
    02.03.2004
    Адрес
    Крым, Севастополь
    Возраст
    36
    Сообщений
    3,089
    Вес репутации
    21

    По умолчанию Re: Проверка правильности расстановки скобок - C++

    Всё куда проще. Баланс скобок проверяется в один проход без всяких стеков. Абсурд слишком общий алгоритм линканул.
    Код :
    1. Целое Счётчик = 0;
    2.  
    3. Цикл по всем символам строки
    4. {
    5.    Если символ == '{' Тогда Увеличить(Счётчик);
    6.    Иначе
    7.       Если символ == '}' Тогда Уменьшить(Счётчик);
    8.  
    9.    Если Счётчик < 0 Тогда
    10.    {
    11.       Ошибка("Закрывающая скобка идёт раньше открывающей");
    12.       Выйти;
    13.    }
    14. }
    15.  
    16. Если Счётчик <> 0 Тогда Ошибка("Нарушен баланс скобок, не хватает закрывающей скобки");
    Entites should not be multiplied beyond necessity @ William Occam
    ---
    Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
    ---
    Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.

  6. #5
    coder garmayev is on a distinguished road
    Регистрация
    19.12.2013
    Адрес
    Irkutsk
    Возраст
    28
    Сообщений
    26
    Вес репутации
    5

    По умолчанию Re: Проверка правильности расстановки скобок - C++

    Цитата Сообщение от Romeo Посмотреть сообщение
    Всё куда проще. Баланс скобок проверяется в один проход без всяких стеков. Абсурд слишком общий алгоритм линканул.
    выполняется лишь баланс, а не правильность выражения

    Пусть уж на основе общих примеров учат логику и принципы программирования?

  7. #6
    Moderator Куратор
    system architect
    Romeo is on a distinguished road Аватар для Romeo
    Регистрация
    02.03.2004
    Адрес
    Крым, Севастополь
    Возраст
    36
    Сообщений
    3,089
    Вес репутации
    21

    По умолчанию Re: Проверка правильности расстановки скобок - C++

    Я не против общих подходов, но по постановке задачи, вроде как, достаточно баланса.

    Меня мой первый преподаватель по основами программирования научил великолепному принципу KISS. Расшифровывается как "Keep it simple, stupid", или "Сделай это проще, дурак". Отлично разбираюсь в архитектуре, чту GOFа, Майерса, Фаулера и Кириевски. Тем не менее, пронёс этот принцип через всю свою карьеру и ни разу об этом не пожалел. Советую это и вам.
    Последний раз редактировалось Romeo; 17.02.2018 в 10:15.
    Entites should not be multiplied beyond necessity @ William Occam
    ---
    Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
    ---
    Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.

+ Ответить в теме

Похожие темы

  1. Количество слов в строке, баланс скобок
    Здравствуйте! Помогите решить пожалйста! 1)Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить...
    от X-FactoR в разделе Решите мне задачку
  2. баланс скобок
    помогите пожалуста исправить ошибку ,у меня только 'да' выдаёт! program z1; uses crt; var s:string; i,k:integer; begin clrscr; readln(s);...
    от garic в разделе задачи на Паскале и Delphi
  3. Вводится последовательность скобок
    задали задачу, не могу сделать даже не знаю как к ней подступиться. новичок в с++ и плохо разбираюсь. Вообщем задача: Дана конечная...
    от DunhiL в разделе задачи на C и C++
  4. Проверка строки
    Допустим есть строки: 1) "5hr6b1fbdr4fdfhdfh3" 2) "5hr6b1fbdr4fdf2dfh3" как сделать чтобы при проверке в первом случае n равнялось 2 (там цифры...
    от Лелик в разделе Delphi и Pascal
  5. Проверка в StringGrid
    Как организовать проверку данных в stringgrid? Допустим я ввожу ячейку число 5 и ПЕРЕХОЖУ НА ДРУГУЮ ЯЧЕЙКУ(пока я нахожусь здесь я могу вводить...
    от Лелик в разделе Компоненты в Delphi

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения