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

правильно ли я выполнил задание? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа со звуком http://www.cyberforum.ru/cpp-beginners/thread640709.html
Здравствуйте, вот занимаюсь работай со звуком, вообще задача стоит в том что б сделать оцифровку звука, записать данные в буфер и вывести полученые числа (случайные, таковыми они должны быть,...
C++ Вызов функций Можно ли программно вызвать все функции записанные в файле? http://www.cyberforum.ru/cpp-beginners/thread640695.html
Удаление символа C++
как удалить последний символ в файле ???
в чём может быть ошибка? C++
char brackets; while( (strlen(brackets)-1) != '~' ) { cin.getline(brackets, 500); cout << brackets << endl; if((strlen(brackets)-1) == '~')
C++ Переопределение, множественная инициализация http://www.cyberforum.ru/cpp-beginners/thread640666.html
Что означает эта ошибка ??? 1>------ Построение начато: проект: FUN_TO__, Конфигурация: Debug Win32 ------ 1>Компиляция... 1>FUN_TO__.cpp...
C++ Выбор среды Eclipse Пришлось озаботиться вопросам на переход к бесплатной IDE для C++. Выбор пал на Eclipse. Настроил Eclipse IDE for C/C++ Developers. Вопрос в другом. Тут:... подробнее

Показать сообщение отдельно
KostyaKulakov
Заблокирован

правильно ли я выполнил задание? - C++

21.08.2012, 19:18. Просмотров 853. Ответов 13
Метки (Все метки)

меня терзают жудкие сомнения насчёт правильности выполнения

Исходный код программы на С++ обычно содержит много пар круглых,
квадратных и фигурных скобок. Если не обращать внимания на всё прочее
содержимое программы, то эти три вида скобок должны образовывать правильное
скобочное выражение. Написать программу, которой на вход подаётся исходный
код программы на С++ и которая обнаруживает проблемы в расстановке скобок.
Упрощающие обстоятельства: можно считать, что программа не содержит
комментариев или в них не используются скобки, и что скобки не встречаются
внутри строковых и символьных литералов.

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include <iostream>
#include <cstring>
 
using namespace std;
 
bool correctbrackets(char brackets[]);
 
int main()
{
    char brackets[500];
    bool correct = false;
    cout << "Enter an expression with parentheses [ End[`] ] : " << endl;
 
    while( brackets[(strlen(brackets)-1)] != *"`")
    {
        cin >> brackets;
 
        if (!correctbrackets(brackets))
        {
            cout << endl <<"Error. source code incorrectly!" << endl;
            return 0;
        }
        else
        correct = true;
 
    }
 
    if(correct)
        cout << endl << "very well"  << endl;
 
    return 0;
}
 
bool correctbrackets(char brackets[])
{
    char end_open_skobka = '@';           // последняя открывающая скобка
    char stack[80];
    int pos = -1;
 
    int round, figured, squared;
 
    round = figured = squared = 0;
 
    for(int i=0; i < strlen(brackets)+1; i++)
    {
        if(brackets[i] == '(')
            round++;
 
        if(brackets[i] == ')')
            round--;
 
        if (brackets[i] == '{') 
            figured++;
 
        if (brackets[i] == '}') 
            figured--;
 
        if (brackets[i] == '[') 
            squared++;  
 
        if (brackets[i] == ']') 
            squared--; 
 
        if ( brackets[i] == '(' || 
             brackets[i] == '{' ||
             brackets[i] == '[' )
        {
            end_open_skobka = brackets[i];          
            pos++;                     
            stack[pos] = brackets[i];         
        }
 
            if (  brackets[i] == ')' && end_open_skobka != '('  ||
                  brackets[i] == '}' && end_open_skobka != '{'  ||
                  brackets[i] == ']' && end_open_skobka != '[' )
            break;
 
        if ( brackets[i] == ')' || brackets[i] == '}' || brackets[i] == ']' )
        {
            pos--;                           
            if (pos >= 0)
                end_open_skobka = stack[pos];
        }
    }
 
    if (round || figured || squared)
        return false;
    else
        return true;
 
}
программа отлично всё обрабатывает. за исключением
C++
1
2
3
int main()
{
}
она крашится. как исправить?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru