Форум программистов, компьютерный форум CyberForum.ru

Проверка числа открывающихся и закрывающихся скобок - C++

Восстановить пароль Регистрация
 
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
02.12.2013, 02:10     Проверка числа открывающихся и закрывающихся скобок #1
Нужно написать функцию, которая проверяет правильность расположения скобок в строке.
Если открывающимся скобкам соответствует столько-же закрывающихся, функция должна возвращать true.
Пример входной строки: "(()))())()"
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2013, 02:10     Проверка числа открывающихся и закрывающихся скобок
Посмотрите здесь:

C++ Проверить, одинаковое ли число открывающихся и закрывающихся скобок в данной строке
C++ Проверить, соблюдается ли равенство открывающихся и закрывающихся скобок
C++ Проверка баланса скобок
C++ Проверить, одинаково ли число открывающихся и закрывающихся скобок в данной строке. Определить длину строки, результат вывести на экран.
Ввести строку символов и найти баланс открывающихся и закрывающихся скобок C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
02.12.2013, 02:11     Проверка числа открывающихся и закрывающихся скобок #2
dimakozyr, Ну посчитай количество открывающихся скобок и количество закрывающих, если они не будут совпадать, то верни false, а если будут совпадать то true.
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
02.12.2013, 02:16  [ТС]     Проверка числа открывающихся и закрывающихся скобок #3
Просто это задание на прохождение стажировки, его за 30 минут надо сделать,
хочется, чтобы правильно было.

Сделал вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
bool parenthesis(char myString[80]) {
    int k = 0;
    for (int i = 0; myString[i]; ++i) {
        if (myString[i] == '(')
            k++;
        if (myString[i] == ')')
            k--;
    }
    if (k == 0)
        return true;
    else
        return false;
}
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,397
02.12.2013, 02:21     Проверка числа открывающихся и закрывающихся скобок #4
C++
1
2
3
4
5
6
7
8
9
#include <algorithm>
#include <iostream>
#include <string>
 
int main()
{
    std::string str = "(()))())()";
    std::cout << std::boolalpha << (std::count(str.begin(), str.end(), '(') == std::count(str.begin(), str.end(), ')') && *str.begin() == '(' && *str.rbegin() == ')') << std::endl;
}
Добавлено через 28 секунд
Цитата Сообщение от dimakozyr Посмотреть сообщение
if (k == 0)
* * * * return true;
* * else
* * * * return false;
C++
1
return !k;
salam
157 / 138 / 11
Регистрация: 10.07.2012
Сообщений: 709
02.12.2013, 07:25     Проверка числа открывающихся и закрывающихся скобок #5
если вас интересует именно правильность, то просто равенство ( и ) - неверно. валится моментально, например, так: )(. приколы типа проверить первую и последнюю - тоже неправильно. например: ())()(().
правильно считать можно так: встретив ( будем увеличивать счетчик на 1, ) - уменьшать на единицу. если счетчик никогда не был отрицательным и в конце ноль - последовательность правильная, иначе - нет.
Yandex
Объявления
02.12.2013, 07:25     Проверка числа открывающихся и закрывающихся скобок
Ответ Создать тему
Опции темы

Текущее время: 10:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru