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

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Проверка правильности расстановки скобок - C++

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

Romeo » 14 янв 2018, 01:28

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

Меня мой первый преподаватель по основами программирования научил великолепному принципу KISS. Расшифровывается как "Keep it simple, stupid", или "Сделай это проще, дурак". Отлично разбираюсь в архитектуре, чту GOFа, Майерса, Фаулера и Кириевски. Тем не менее, пронёс этот принцип через всю свою карьеру и ни разу об этом не пожалел. Советую это и вам.

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

garmayev » 13 янв 2018, 18:45

Romeo писал(а):Всё куда проще. Баланс скобок проверяется в один проход без всяких стеков. Абсурд слишком общий алгоритм линканул.

выполняется лишь баланс, а не правильность выражения

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

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

Romeo » 04 янв 2018, 22:26

Всё куда проще. Баланс скобок проверяется в один проход без всяких стеков. Абсурд слишком общий алгоритм линканул.

Код: Выделить всё

Целое Счётчик = 0;

Цикл по всем символам строки
{
   Если символ == '{' Тогда Увеличить(Счётчик);
   Иначе
      Если символ == '}' Тогда Уменьшить(Счётчик);

   Если Счётчик < 0 Тогда
   {
      Ошибка("Закрывающая скобка идёт раньше открывающей");
      Выйти;
   }
}

Если Счётчик <> 0 Тогда Ошибка("Нарушен баланс скобок, не хватает закрывающей скобки");

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

Absurd » 04 янв 2018, 19:41

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

Kateeeeeeee » 04 янв 2018, 15:24

Помогите, пожалуйста, в написании счетчика скобок. Только новичок в программирование. Что-то пыталась сделать . Начало программы выглядит так. В вектор записывается выражение со скобками (например: {{a|c}f{s|g}}) и оно должно проверяться на правильность расстановки скобок.

Код: Выделить всё

#include<iostream>
#include<vector>
#include<string>

int main(){
setlocale(LC_ALL, "");
int rb = -1;
int lb = -1;
int k;
std::cout << "Введите размер:";
std::cin >> k;
std::cout << "Введите строку";
std::vector<char> myVector(k);
for (int i = 0; i < myVector.size(); i++){
std::cin >> myVector[i];

Вернуться к началу