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

Проверить, правильно ли расставлены скобки в выражении - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
lil21
1 / 1 / 0
Регистрация: 20.12.2011
Сообщений: 6
27.12.2011, 18:41     Проверить, правильно ли расставлены скобки в выражении #1
Задача: "Строка содержит арифметическое выражение, в котором используются круглые скобки, в том числе и вложенные. Проверить, правильно ли в нем расставлены скобки."
не могу разобраться с синтаксисом работы со строками, помогите пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2011, 18:41     Проверить, правильно ли расставлены скобки в выражении
Посмотрите здесь:

C++ Работа со стеком (Необходимо проверить,правильно ли расставлены скобки)
Дана строка, содержащая латинские буквы и скобки. Если скобки расставлены правильно - вывести 0. Иначе - номер позиции, где есть ошибочная скобка C++
Проверить, правильно ли в текст входят круглые скобки. Ответ ДА или НЕТ с++ C++
C++ Нужен алгоритм, которым можно проверить, правильно ли пользователь расставил скобки
C++ Проверить, правильно ли в арифметическом выражении расставлены скобки.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mayonez
 Аватар для Mayonez
379 / 271 / 20
Регистрация: 26.12.2009
Сообщений: 875
27.12.2011, 18:45     Проверить, правильно ли расставлены скобки в выражении #2
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
#include <iostream>
#include <string>
#include <stack>
 
using namespace std;
 
int main()
{
    string s;
    getline(cin, s);
    stack<char> st;
    bool f = 1;
    for(size_t i = 0; i < s.size(); i++)
    {
        if(s[i] == '(')
            st.push(s[i]);
        else if(s[i] == ')')
        {
            if(st.empty() || st.top() != '(')
            {
                f = 0;
                break;
            }
            else
                st.pop();
        }
    }
    if(f && st.empty())
        cout << "good";
    else
        cout << "bad";
    cout << endl;
    return 0;
}
lil21
1 / 1 / 0
Регистрация: 20.12.2011
Сообщений: 6
27.12.2011, 18:50  [ТС]     Проверить, правильно ли расставлены скобки в выражении #3
можно этот код на С переофоромить?
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
27.12.2011, 18:57     Проверить, правильно ли расставлены скобки в выражении #4
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
#include <stdio.h>
 
int main( void )
{
    char buffer[256];
 
    putchar( '>' );
    fgets( buffer, 256, stdin );
 
    char * it;
    unsigned char depth = 0;
 
    for( it = buffer; *it; it++ )
    {
       if( *it == '(' )
           depth++;
       else if( *it == ')' )
       {
           if( depth )
              depth--;
           else
           {
               puts( "Лишняя закрывающая скобка" );
               return 1;
           }
       }
    }
 
    if( depth )
    {
        puts( "Лишняя открывающая скобка" );
        return 2;
    }
 
    puts( "Всё нормально" );
    return 0;
}
Mayonez
 Аватар для Mayonez
379 / 271 / 20
Регистрация: 26.12.2009
Сообщений: 875
27.12.2011, 22:45     Проверить, правильно ли расставлены скобки в выражении #5
Цитата Сообщение от talis Посмотреть сообщение
depth--;
минусовать unsigned???
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
27.12.2011, 22:47     Проверить, правильно ли расставлены скобки в выражении #6
Цитата Сообщение от Mayonez Посмотреть сообщение
минусовать unsigned???
а что такое? за ноль-то он не зайдёт:

Цитата Сообщение от talis Посмотреть сообщение
C
1
2
if( depth )
    depth--;
а что в этом не так?
Yandex
Объявления
27.12.2011, 22:47     Проверить, правильно ли расставлены скобки в выражении
Ответ Создать тему
Опции темы

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