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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Более 1 седловой точки в матрице 5х5 http://www.cyberforum.ru/cpp-beginners/thread529626.html
Вопрос таков: есть матрица 5х5, может ли в ней быть более 1 седловой точки? Если может напишите пожалуйста пример надо проверить программу.
C++ Файлы. Как отловить конец строки. Доброй ночи всем. Столкнулся с небольшой проблемой : надо прочесть из файла большое количество информации. Решил все хранить в векторе строк. ifstream is; is.open ("my_file.txt"); vector < string > ID_FT; string buffer; while(is >> buffer) ID_FT.push_back(buffer); http://www.cyberforum.ru/cpp-beginners/thread529614.html
Как с помощью istringstream разобрать строку на переменные C++
у нас есть клас CDateTime, внутри private: string date; и куча прототипов для перегрузки операторов +, -, =, итд. ещё есть конструктор. CDateTime::CDateTime ( ) { string date = "1.1.2000 00:00:00";
C++ Считать с клавиатуры строку символов
Написать программу, которая читает с клавиатуры строку символов. Необходимо найти соотношение (в %) букв и цифр в строке, напечатать его и удалить все символы '*' из строки, добавив в конец такое же количество символов '!'. Вывести результат на экран. Длина строки не вводится, а определяется в программе. Если строка не удовлетворяет условию, выдать сообщение об ошибке и предложить ввести снова.
C++ Посчитать количество слов, содержащихся в сообщении http://www.cyberforum.ru/cpp-beginners/thread529606.html
дано осмысленное текстовое сообщение (т.е. алфавитно - цифровая информация разделенная пробелами и знаками препинания, в конце которого стоит точка) нужно посчитать количество слов, содержащихся в сообщении
C++ Почему перегруженный оператор = должен возвращать ссылку на объект Объясните доступно пожалуйста. Почему перегруженный оператор= должен возвращать ссылку на объект? А оператор+ может возвращать как ссылку на объект, так и сам объект? подробнее

Показать сообщение отдельно
Duha666
50 / 50 / 5
Регистрация: 10.03.2012
Сообщений: 138
28.03.2012, 07:37     Вывести значение логического выражения, заданного в виде строки S.
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)).
 
Текущее время: 15:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru