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

Де Морган - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Шифрование Эль Гамаля http://www.cyberforum.ru/cpp-beginners/thread281708.html
Может кто нибудь помочь, я плохо разбираюсь в коде, моей знакомой надо код шифрование, чтоб по предмету получить оценку, методом одиночной перестановки Эль гамаля, у меня есть прога, но она сильно замудрена, её не правильно поймут просто, если надо могу скинуть, просто я не знаю что да и как там, сделать чтобы этот код был по проше, может кто нибудь помочь, буду презнателен очень
C++ Решение нелинейного уравнения. Метод хорд и касательных Написал я программку для решения, но вот незадача: Не находит их на некоторых отрезках. Уравнение: ln(x+1)-p/(x^2)=0 p = -1...1 (т.е. 20 уравнений) Вот класс, реализующий это решение: typedef double(*foo)(double,double); typedef struct _item { http://www.cyberforum.ru/cpp-beginners/thread281663.html
C++ Узнать количество динамической памяти
Здравствуйте. Препод задал задание на работу с динамической памятью. Саму работу сделал, но теперь вопрос - необходимо узнать сколько доступно программе динамической памяти до обработки и после. Можно ли это сделать в с++? На паскале, помнится, была переменная memavail
C++ Не могу найти ошибку.Наследование
Есть код,не компилиться,выдает ошибку,код такой /*13. Задание 1. Создать класс Function с методом вычисления значения функции y=f(x) в заданной точке. 2. Создать производные классы: Line (y=ax+b), Kub (y=ax2+bx+c), Hyperbola ( y=a/x+b ) со своими методами вычисления значения в заданной точке. 3. Создать массив n функций и вывести полную информацию о значении данных функций в точке х. */
C++ как убрать лишний пробел при выводе дня в дате http://www.cyberforum.ru/cpp-beginners/thread281651.html
#include <vcl.h> #include <stdio.h> #include <string.h> #pragma hdrstop #pragma argsused #include <iostream.h> #include <iomanip.h> const int m=20; struct date {unsigned int day,
C++ Структуры Народ помогите составить прогу на TC со структурами, вообще не врубился как это делать! Задача: Ввести структуру с полями: фамилия, город, адрес для описания понятия житель. Составить и протестировать функцию ИРОНИЯ_СУДЬБЫ (С), которая печатает фамилии двух (любых) жителей из списка С, живущих в разных городах по одинаковому адресу. Заранее благодарю! подробнее

Показать сообщение отдельно
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
23.04.2011, 15:02  [ТС]     Де Морган
silent_1991, Выражение представлено строкой для начала. Дерево (если вообще буду использовать) будет использоваться только для подсчета.

Добавлено через 5 минут
Приблизительная суть и почему работа именно со строкой.

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
class Create_correct
{
public:
    Create_correct(const std::string& str_):str(str_)
    {
    }
    std::string create_correct()
    {
        delete_double_negate();
        delete_impl();
        de_morgan();
        return str;
    }
private:
    void delete_impl()
    {
        size_t idx=0;
        const std::string& opers = "&|()";
        const std::string& impl = "->";
        while((idx=str.find(impl, idx)) != std::string::npos)
        {
            std::string::iterator find_iter = str.begin() + idx;
            std::string::iterator end_iter = std::find_first_of(find_iter, str.end(), 
                opers.begin(), opers.end());
            std::string::reverse_iterator rev_tmp_iter(find_iter);
            std::string::iterator beg_iter = std::find_first_of(rev_tmp_iter, str.rend(), 
                opers.rbegin(), opers.rend()).base();
            std::string tmp_str(beg_iter, end_iter);
            std::string::iterator beg_tmp_iter = std::find_first_of(tmp_str.begin(), tmp_str.end(), 
                impl.begin(), impl.end());
            std::string first_var(tmp_str.begin(), beg_tmp_iter);
            std::string second_var(beg_tmp_iter + 2, tmp_str.end());
            if(first_var.find("!") != std::string::npos)
                first_var.erase(first_var.begin());
            else
                first_var.insert(first_var.begin(), '!');
            tmp_str = first_var + '|' + second_var;
            str.replace(beg_iter, end_iter, tmp_str);
            idx += 2;
        }
    }
    void delete_double_negate()
    {
        size_t idx=0;
        const std::string& double_negate = "!!";
        const std::string& opers = "&|()";
        while((idx=str.find(double_negate)) != std::string::npos)
        {
            std::string::iterator find_iter = str.begin() + idx;
            std::string::iterator end_iter = std::find_first_of(find_iter, str.end(),
                opers.begin(), opers.end());
            std::string var(find_iter + 2, end_iter);
            str.replace(find_iter, end_iter, var);
            idx += 2;
        }
    }
    std::string str;
};
 
Текущее время: 20:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru