Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
tom
1 / 1 / 0
Регистрация: 08.11.2008
Сообщений: 68
1

Проверить правильность расстановки скобок

07.04.2009, 21:59. Просмотров 1144. Ответов 8
Метки нет (Все метки)

Не знаю в чем ошибка, программа не работает. Подскажите пожалуйста))
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
41
42
43
44
45
46
47
48
49
50
51
52
/* Проверить правильность расстановки скобок. */
 
#include <iostream>
#include <stack>
#include <string.h>
using namespace std;
 
 
int main() {
    stack <char > s;
    char * string = new char[300];
    cout<<"Enter string: "<<endl;
    cin>>string;
    s.top()=0;
    for (int i=0; i!='\0'; i++)
    {
        if ((string[i]=='(')||(string[i]=='[')||(string[i]=='{'))
            s.push(string[i]);
        else
            if ((string[i]==')')||(string[i]==']')||(string[i]=='}'))
            {
                if (s.top()==0){
                    cout<<"Disbalans bolshe zakritix skobok"<<endl;
                break;
                }
            }
            else
                s.pop();
        if ((string[i]== ')') && ((s.top=='{') || (s.top=='[')))        {
            cout<<"Nesoootvetstvie tipa"<<endl;
            break;
        }
        if ((string[i]== '}') && ((s.top=='(') || (s.top=='['))){
            cout<<"Nesoootvetstvie tipa"<<endl;
            break;
        }
        if ((string[i]== ']') && ((s.top=='{') || (s.top=='('))){
            cout<<"Nesoootvetstvie tipa"<<endl;
            break;
        }
        if (s.top() == 0)
            cout<<"Balans"<<endl;
        else
            cout<<"Disbalans bolshe otkritix skobok"<<endl; 
        while (s.top()!=0) 
        {
        s.pop();
        cout<<string[i];
        }
    }
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2009, 21:59
Ответы с готовыми решениями:

Проверить правильность расстановки скобок в строке
Здравствуйте, помогите написать программу на языке СИ Ввести с клавиатуры строку, содержащую...

Проверить правильность расстановки скобок в строке
прошу помочь доделать задачу:Задан текст, в котором присутствующие скобки. Проанализировать его с...

Проверить правильность расстановки скобок и выражений
Дано скобочное выражение, оканчивающееся точкой с запятой. Проверить правильность расстановки ...

Проверить правильность расстановки скобок во введенной строке
Проверить правильность расстановки скобок в введенное строке, учитывая круглые, квадратные и...

Проверить правильность расстановки круглых и квадратных скобок в выражениях
дана строка символов проверить правильность расстановки круглых и квадратных скобок в выражениях

8
Yarosh
мусор в БД
4670 / 1123 / 34
Регистрация: 17.01.2009
Сообщений: 4,485
07.04.2009, 22:02 2
что компилятор пишет, какую ошибку выдает?
ну, как минимум, лишние скобки
0
tom
1 / 1 / 0
Регистрация: 08.11.2008
Сообщений: 68
07.04.2009, 22:07  [ТС] 3
Debug assertion failed! сразу после того как ввожу строку!
0
RazorQ
583 / 350 / 15
Регистрация: 06.02.2009
Сообщений: 1,386
07.04.2009, 22:19 4
Открывающихся скобок на две меньше чем закрывающихся
0
tom
1 / 1 / 0
Регистрация: 08.11.2008
Сообщений: 68
07.04.2009, 22:35  [ТС] 5
да вроде верно, а все равно таже ошибка!
0
Gravity
570 / 564 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
07.04.2009, 23:01 6
Код
for (int i=0; i!='\0'; i++)
Это что за жесть - i!='\0' ?
0
RazorQ
583 / 350 / 15
Регистрация: 06.02.2009
Сообщений: 1,386
08.04.2009, 08:29 7
Цитата Сообщение от Gravity Посмотреть сообщение
Это что за жесть - i!='\0' ?
Это указывает на завершающий ноль. Формально всё правильно
0
Gravity
570 / 564 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
08.04.2009, 11:28 8
Цитата Сообщение от RazorQ Посмотреть сообщение
Это указывает на завершающий ноль. Формально всё правильно
Дело в том, что такой цикл даже не начнется, i присваивается 0 и сразу же проверка не равно ли i нулю. Вероятно, выглядеть должно так
Код
for(i = 0; string[i] != '\0'; i++)
0
tom
1 / 1 / 0
Регистрация: 08.11.2008
Сообщений: 68
08.04.2009, 12:54  [ТС] 9
теперь программа не работает когда скобки разных типов, проверка не выполняется
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
#include <stack>
#include <string.h>
using namespace std;
 
 
int main() {
    stack <char > s;
    char * string = new char[300];
    cout<<"Enter string: "<<endl;
    cin>>string;
    for (int i=0; string[i]!=0; i++)
    {
        if ((string[i]=='(')||(string[i]=='{')||(string[i]=='['))
            s.push(string[i]);
        else
        
            if ((string[i]==')')||(string[i]=='}')||(string[i]==']'))
                if (s.empty())
                {
                    cout<<"Disbalans bolshe zakritix skobok"<<endl;
                    exit(0);
                }
                else
                    s.pop();
        
        if ((string[i]== ')') && ((s.top=='{') || (s.top=='[')))
                {
                    cout<<"Nesoootvetstvie tipa"<<endl;
                    exit(0);
                }
                if ((string[i]== '}') && ((s.top=='(') || (s.top=='[')))
                {
                    cout<<"Nesoootvetstvie tipa"<<endl;
                    exit(0);
                }
                if ((string[i]== ']') && ((s.top=='{') || (s.top=='(')))
                {
                    cout<<"Nesoootvetstvie tipa"<<endl;
                    exit(0);
                }
        
        
    }   
    if (s.size()==0)
            cout<<"Balans"<<endl;
    else
      cout<<"Disbalans bolshe otkritix skobok"<<endl;
    
                
            
                //}}}
    return 0;
}
0
08.04.2009, 12:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2009, 12:54

Дано скобочное выражение, проверить правильность расстановки скобок
дано скобочное выражение заканчивающееся точкой с запятой проверить правильность расстановки скобок...

Пример Дана строка символов. Проверьте правильность расстановки в ней круглых скобок
Если скобок больше справа, то все работает(т.к условие прописано). Но вот не пойму как прописать...

Проверить правильность скобочной структуры, составленной из нескольких типов скобок
Я пока в процессе изучение Си и поэтому уделяю большое время на задачи что бы во много разобратся...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru