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

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

Войти
Регистрация
Восстановить пароль
 
Ejevikka
0 / 0 / 0
Регистрация: 18.02.2012
Сообщений: 38
#1

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

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

Вывести значение логического выражения, заданного в виде строки S.
Выражение определяется следующим образом («T» — True, «F» — False):
<выражение>::=T | F | And(<выражение> , <выражение>) |Or(<выражение> , <выражение>)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2012, 07:18     Вывести значение логического выражения, заданного в виде строки S.
Посмотрите здесь:

C++ Объяснить результат и вывести на экран результат логического выражения
Вывести результат логического выражения (1 или 0) C++
C++ Вывести значение логического выражения, заданного в виде строки S. Выражение определяется следующим образом («T» — True, «F» — False): <выражение> :
C++ Вывести на экран матрицу порядка n (n=1..15) - элементы выводятся не в виде матрицы, а в виде строки
Вычислить значение логического выражения C++
Вычислить значение заданного выражения C++
C++ Для заданного натурального k и действительного x посчитать значение выражения
Арифмометр: посчитать значение выражения, заданного в виде строки C++
Найти значение арифметического выражения, заданного в виде строки C++
C++ Решение биквадратного уравнения, заданного в виде строки в рантайме
Вывести таблицу истинности заданного выражения C++
C++ Вычислить значение арифметического выражения, заданного в виде строки

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Duha666
50 / 50 / 5
Регистрация: 10.03.2012
Сообщений: 138
28.03.2012, 07:37     Вывести значение логического выражения, заданного в виде строки S. #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
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)).
Yandex
Объявления
28.03.2012, 07:37     Вывести значение логического выражения, заданного в виде строки S.
Ответ Создать тему
Опции темы

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