Форум программистов, компьютерный форум, киберфорум
Наши страницы

Разработать функцию для проверки баланса парных скобок в строке - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Поменять местами элементы массива, симметричные относительно центрального http://www.cyberforum.ru/cpp-beginners/thread1704445.html
Дан одномерный вещественный массив из N элементов (N – нечетное), заданных случайными числами на промежутке [a;*b). Значения N, a, b вводятся с клавиатуры. Поменять местами элементы, симметричные...
C++ Найти в фотографии квадрат с наибольшей суммой и квадрат с наименьшей суммой Двумерный массив является "черно-белой фотографией", каждый его элемент - насыщенность некоторой точки (от 0 до некоторого значения Max). Требуется для случайно сгенерированного порядка стороны... http://www.cyberforum.ru/cpp-beginners/thread1704432.html
C++ Разработать класс СПИСОК
Разработать класс СПИСОК последовательного хранения. Для класса реализовать: конструктор, деструктор, метод помещения вставки значения в список (по индексу), удаление элемента из списка (по...
Перегрузка операторов C++
Создать класс МНОГОЧЛЕН степени n от одной переменной x, задаваемый массивом своих коэффициентов (массив должен храниться в динамической памяти и задаваться внутри конструктора, используя датчик...
C++ Определить, в какой из систем счисления сумма всех цифр натурального числа имеет наибольшее значение http://www.cyberforum.ru/cpp-beginners/thread1704379.html
C++ Определить, в какой из систем счисления сумма всех цифр натурального числа имеет наибольшее значение. Основания систем счисления: 2,3,...,9.
C++ Определить, являются ли все числа последовательности одного знака C++ Дана последовательность из вещественных чисел, которые вводятся по одному. За последним числом вводится нуль. Определить, являются ли все числа последовательности одного знака. Входные данные... подробнее

Показать сообщение отдельно
akaAxeL
66 / 66 / 30
Регистрация: 14.07.2013
Сообщений: 251
06.04.2016, 12:35
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include<iostream>
#include<stack>
#include<cstring>
using namespace std;
// Function to check whether two characters are opening
// and closing of same type.
bool ArePair(char opening,char closing)
{
    if(opening == '(' && closing == ')') return true;
    else if(opening == '{' && closing == '}') return true;
    else if(opening == '[' && closing == ']') return true;
    return false;
}
int balanceBrackets(char * exp)
{
    stack<char>  S;
  unsigned int noBrackets = 0;
    for(int i =0;i<strlen(exp);i++)
    {
        if(exp[i] == '(' || exp[i] == '{' || exp[i] == '[')
            S.push(exp[i]);
        else if(exp[i] == ')' || exp[i] == '}' || exp[i] == ']')
        {
            if(S.empty() || !ArePair(S.top(),exp[i]))
                return 0;
            else
                S.pop();
        }
    else noBrackets++;
    }
  
  if (noBrackets == strlen(exp))
    return -1;
    return S.empty() ? 1:0;
}
 
int main(int argc, char const *argv[]) {
  cout << balanceBrackets(const_cast<char*> (argv[1])) << endl;
  return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.