@carbone

Как упростить проверку на правильность круглых скобок?

Слишком большое условие, за код извиняюсь ,заранее спасибо
#include <iostream>
#include <fstream>

using namespace std;



int main() {
    const int n = 255;
    char text[n];
    ifstream file;
    file.open("Text.txt");
    while (file.get(text, n))
    {
        cout << "Text in txt file: " << text;
    }
    file.close();
    cout << text << endl;
    int sum = 0, open = 0, close = 0;
    for (int i = 0; i < n; i++)
    {
        if (text[i] == '(')
        {
            open = open + 1;
        }
        else if (text[i] == ')')
        {
            close = close + 1;


            if (close == open && close != 0 && open != 0)
            {
                sum = sum + close, close = 0, open = 0;

            }

        }
        else
            if (open > close)
            {
                sum = sum + close, close = 0, open = 0;
            }

           if (open < close)
          {
               sum = sum + open, close = 0, open = 0;
          }


    }
    cout << "Correct brackets: " << sum;


}
  • Вопрос задан
  • 91 просмотр
Пригласить эксперта
Ответы на вопрос 2
by_kapt0xa
@by_kapt0xa
Учу кресты катаюсь на велике
попробуй это
#include <iostream>
#include <cassert>

using namespace std;

int main()
{
	string input;
	cin >> input;
	int unclosed_count = 0;
	for (char c : input)
	{
		if (c == '(')
		{
			++unclosed_count;
		}	
		else if (c == ')')
		{
			--unclosed_count;
			assert(unclosed_count >= 0);//не знаю как надо реагировать на неправильные скобки, но вот тут нужно отслеживать корректность.
		}
	}
}
Ответ написан
@res2001
Developer, ex-admin
Просто считайте количество открывающих скобок и количество закрывающих. Причем, если на закрывающей скобке количество открывающих <= количества закрывающих, то ее не учитываем (или учитываем в ошибках закрывающих скобок), т.к. нет парной открывающей.
Ошибки по открывающим скобкам будут, если в конце количество открывающих > количества закрывающих, количество ошибок открывающих скобок в этом случае = количество открывающих - количества закрывающих.
Количество правильных скобок == количеству закрывающих (т.к. не правильные закрывающие мы не считаем).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы