В C++ для упрощения проверки на правильность круглых скобок можно использовать стек (stack).
Идея заключается в следующем: при обходе строки с выражением будем добавлять открывающие скобки в стек, а при встрече закрывающей скобки будем проверять, соответствует ли ей последняя открытая скобка в стеке. Если соответствие найдено, то удаляем последнюю скобку из стека. Если в конце проверки стек оказался пустым, то все скобки в выражении правильно сбалансированы, иначе имеется непарная скобка и выражение неправильно.
Вот пример кода на C++, реализующий данную проверку:
#include <iostream> #include <stack> #include <string> bool checkParentheses(const std::string& expression) { std::stack<char> parenthesesStack; for (const char& ch : expression) { if (ch == '(') { parenthesesStack.push(ch); // добавляем открывающую скобку в стек } else if (ch == ')') { if (parenthesesStack.empty()) { return false; // нет открывающей скобки для закрывающей } parenthesesStack.pop(); // удаляем открывающую скобку из стека } } return parenthesesStack.empty(); // возвращаем true, если стек пуст } int main() { std::string expression; std::cout << "Введите выражение: "; std::cin >> expression; if (checkParentheses(expression)) { std::cout << "Скобки сбалансированы." << std::endl; } else { std::cout << "Скобки несбалансированы." << std::endl; } return 0; }
Программа принимает выражение от пользователя и проверяет его на правильность расстановки скобок. Если скобки сбалансированы (нет непарных скобок), выводится сообщение "Скобки сбалансированы", в противном случае выводится сообщение "Скобки несбалансированы".
Приведенный код использует стандартную библиотеку C++ для работы со стеком (stack) и строками (string). Вы также можете реализовать собственный стек с помощью массива или связного списка, если нужно.