С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/29: Рейтинг темы: голосов - 29, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 18.02.2012
Сообщений: 38
1

Вывести значение логического выражения, заданного в виде строки S.

28.03.2012, 07:18. Показов 5420. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вывести значение логического выражения, заданного в виде строки S.
Выражение определяется следующим образом («T» — True, «F» — False):
<выражение>::=T | F | And(<выражение> , <выражение>) |Or(<выражение> , <выражение>)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.03.2012, 07:18
Ответы с готовыми решениями:

Вывести значение логического выражения, заданного в виде строки S. Выражение определяется следующим образом («T» — True, «F» — False): <выражение> :
помогите пожалуйста решить задачку на рекурсию Вывести значение логического выражения, заданного...

Рекурсия: вычислить значение логического выражения, заданного в виде строки
Вывести значение логического выражения, заданного в виде строки S. Выражение определяется следующим...

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

Вывести значение логического выражения, заданного в виде строки S.
Вывести значение логического выражения, заданного в виде строки S. Выражение определяется следующим...

1
53 / 53 / 19
Регистрация: 10.03.2012
Сообщений: 138
28.03.2012, 07:37 2
Лучший ответ Сообщение было отмечено Ejevikka как решение

Решение

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
bool ans(char * str, int l, int r) // логическое значение на промежутке [l, r] строки str;
{
    for (int i = l; i <= r; i++)
    {
        if (str[i] == 'T') // если встретили T, то сразу возвращаем истину
            return true;
        if (str[i] == 'F') // аналогично с F
            return false;
        if (str[i] == '(') // если это скобка or или and
        {
            bool t = (str[i - 1] == 'r'); // определяем тип действия(Or/and), true - если это or
            int balance = 1, s; // balance - текущий баланс скобок для корректного определения конца функции, s - расположение запятой-сепаратора
            l = i + 1; // левая граница параметров функции
            for (int j = i + 1; balance > 0; j++)
            {
                if (str[j] == '(')
                    balance++;
                if (str[j] == ')')
                    balance--;
                if (str[j] == ',' && balance == 1) // устанавливаем позицию запятой
                    s = j;
                r = j;
            }
            if (t) // возвращаем значение в зависимости от типа действия
                return (ans(str, l, s - 1) | ans(str, s + 1, r)); 
            else
                return (ans(str, l, s - 1) & ans(str, s + 1, r));
        }
    }
}
Если хотите получить значение на строке x, то ответом будет ans(x, 0, strlen(x)).
0
28.03.2012, 07:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.03.2012, 07:37
Помогаю со студенческими работами здесь

Вывести значение логического выражения, заданного в виде строки S
Вывести значение логического выражения, заданного в виде строки S. Выражение определяется следующим...

Вывести значение логического выражения, заданного в виде строки S
Всем Доброго времени суток. Окажите помощь при решении задачи, кому не сложно подскажите про что в...

Вывести значение логического выражения, заданного в виде строки S
Вывести значение логического выражения, заданного в виде строки S. Выражение определяется...

Рекурсия: вывести значение логического выражения, заданного в виде строки
Доброе время суток всем вошедшим)) Вот проблема такая замысловатая, решить программу рекурсия((...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru