@William03

В чем ошибка, Visual Studio 2017?

Только установил Microsoft Visual Studio 2017. Сначала была проблема - не находил project.exe файл. Выяснилось, что проблема c SDK. Установил новый, все вроде как нормально. Программа:
#include <iostream>
using namespace std;

int main() {
        cout << "Why don't you work?!!";
        return 0;


Работает, компилируется. Но после того, как я копирую код из другой программы:
/* Program 03.12.2018 */

#include <iostream>
#include <string>
#include <stack>
using namespace std;

bool IsCorrectSequence (const string& sq) {
	stack <char> seq;
	char v;
	for (const char& c: sq) {
		v = seq.top();
		if ((c == ')' && v == '(') ||
			(c == ']' && v == '[') ||
			(c == '}' && v == '{')) {seq.pop();}
		else if (c == ')' || c == ']' || c == '}') {return false;}
		else {seq.push(c);}
	}
	return true;
}
	


int main() {
	string s;
	cin >> s;
	cout << "S is " << (IsCorrectSequence(s) ? "correct sequence" : "not correct sequence") << endl;
	return 0;
}


Все рушится:
5c053ddd4bea9919884829.png

P.S. Программа решает задачу "Правильная скобочная последовательность":
Правильная скобочная последовательность – последовательность, состоящая из символов –
«скобок», в которой каждой отрывающей скобке соответствует закрывающая скобка такого же
типа, что и открывающая скобка. Например, правильными будут следующие последовательности:
[([])((([[[]]])))]{()}, ()((()))[[]]. Не будут являться правильными скобочные последовательности [[))
(несоответствие типа закрывающих скобок типу открывающих), }{ (закрывающая скобка стоит
раньше открывающей), [[{{}}] (не каждой открывающей скобке соответствует закрывающая).
Является ли данная скобочная последовательность правильной?
  • Вопрос задан
  • 76 просмотров
Решения вопроса 1
GavriKos
@GavriKos
Ну так у вас логические ошибки. seq пустой, а вы делаете из него top - пытаетесь взять верхний элемент. По документации к функции - это приводит к неопределенному поведению.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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