Предмет: Информатика, автор: naialol

Дана строка, содержащая латинские буквы и круглые скобки.
Если скобки расставлены правильно (то есть каждой открывающей соответствует одна закрывающая), то вывести число 0.
В противном случае вывести или номер позиции, в которой расположена первая ошибочная закрывающая скобка, или, если закрывающих скобок не хватает, число –1. Нумерация позиций символов начинается с 1.

с помощью c++

Ответы

Автор ответа: rinatrr09
1

Ответ:

#include <iostream>

using namespace std;

int main() {

string str;

cin >> str;

int count = 0, last_open = 0;

char open = '(', closed = ')';

for (int i = 0; i < str.size() and count >= 0; ++i){

 if (str[i] == open){

  ++count;

  last_open = i + 1;

 }

 else if (str[i] == closed)

  --count;

}

if (count < 0)

 cout << -1;

 

else if (count > 0)

 cout << last_open;

 

else

 cout << 0;

return 0;

}


naialol: Здравствуйте! Большое спасибо, но я не получила той Ввод и Вывод, в которых я нуждался

Ввод Вывод
((())) 0
Ввод Вывод
())( 3
rinatrr09: #include

using namespace std;

int main() {

string str;

cin >> str;

int count = 0, last_closed = 0;

char open = '(', closed = ')';

for (int i = 0; i < str.size() and count >= 0; ++i){

if (str[i] == open){

++count;

}

else if (str[i] == closed){

--count;
last_closed = i + 1;
}

}

if (count < 0)

cout << last_closed;



else if (count > 0)

cout << -1;



else

cout << 0;

return 0;

}
naialol: <3 <3 thaaaaank youuuuuu
Похожие вопросы