@mihailos

Как довести данный код до конца?

#include <iostream>
#include <vector>

using namespace std;

int main(){
	string a;
	cin>>a;
	int c;
	vector<char> b;
	for(int i = 0; i < a.length(); i++){
		if(a[i] == '(') b.push_back(a[i]);
		else if(a[i] == ')') b.pop_back();
	}
	if(b.size() > 0) cout<<"Неправильная скобочная последовательность!!!"<<endl;
	else cout<<"Правильная скобочная последовательность"<<endl;
}

При вводе строки "()())" выдает ошибку: Ошибка сегментирования (стек памяти сброшен на диск).
Но я, вроде бы, понимаю почему.
И есть вопрос: как вместо этой ошибки вывести "Неправильная скобочная последовательность!!!" или как можно отследить данную ошибку?
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Потому что вы делаете pop_back на пустом векторе.
P.S.
А когда-то для этих целей хватало одной целочисленной переменной. Теперь, смотрю, векторы используют. Скоро, наверное, bigdata и искусственный интеллект подтянут...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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