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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Simkara
16 / 3 / 3
Регистрация: 26.11.2011
Сообщений: 92
#1

Вызов логической функции - C++

21.12.2012, 19:18. Просмотров 477. Ответов 1
Метки нет (Все метки)

Есть функция check которая проверяет баланс скобок в строке.
Проблема в том, что при вызове её из main`а программа крашится =(
В чем может быть проблема?

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
#include <iostream>
using namespace std;
 
bool check (char s[50])
{
    bool z=false;
    int i, c=0,l=1,r=0;
    while (s[i])
    {
        if (s[i]=='(') {l=i; c++;}
        if (s[i]==')') 
        {
            r=i;
            c--;
            if (r<l) 
            {
                return false;
                c=10; 
                break;
            }        
        }
        i++;
    }
    if (c==0){return true;}
    else if (c!=0 && c!=10){return false;}
}
 
 
int main()
{
    char s[50];
    bool c;
    cin.getline (s,50);
    c=check (s);
    if ( c == true )
        cout << "YES\n";
    else
        cout << "NO\n";
    
    cin.get();
    cin.get();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2012, 19:18     Вызов логической функции
Посмотрите здесь:

C++ Написать программу, которая выводит таблицу истинности для логической функции
C++ Вызов функции.
C++ Вызов функции
C++ Вызов функции
C++ Вызов функции!
Вызов функции в возврате значения функции C++
C++ Вызов функции
Напечатать таблицу истинности логической функции C++
Вызов функции в параметре другой функции C++
C++ Использование логической функции XOR
C++ Вызов функции
вызов функции из под функции C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6482 / 4948 / 455
Регистрация: 14.02.2011
Сообщений: 16,389
21.12.2012, 22:30     Вызов логической функции #2
Посылал тебе ответ, форум упал, дублирую

Цитата Сообщение от Simkara Посмотреть сообщение
return false;
c=10;
break;
зачем
C++
1
2
c=10; 
break;
до них дело не дойдет
ты уже вышел из функции
C++
1
return false;
да и накрутил ты
задача решается проще
C++
1
2
3
4
5
6
7
8
 while (s[i])
{
if (s[i]=='(') c++;
if (s[i]==')') c--;
if(c<0) return false; //закрывающих больше чем открывающих ловить нечего дисбаланс  
i++;
}
return c==0;// есть боланс вернем true, нет false;
цикл проверки строки на твоей совести , оставил твой
Yandex
Объявления
21.12.2012, 22:30     Вызов логической функции
Ответ Создать тему
Опции темы

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