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

ребят!)бинарное дерево - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Значение функции http://www.cyberforum.ru/cpp-beginners/thread713482.html
Нужно вычислить и вывести на экран значение функции z= 5*x+y, если x>y z= cos(x), если x=y z= -2sin(y), если y-10<x<y z= 0, если x<=y-10 Значения x и y вводить с клавиатуры. С него...
C++ "Двойной" доступ к переменным класса Господа, прошу совета в изложенной ниже ситуации. Часто мне встречается в различных вариациях, поэтому есть потребность в изящном решении. Итак, есть, допустим, такой класс: class... http://www.cyberforum.ru/cpp-beginners/thread713474.html
C++ С++, какую среду разработки выбрать?
Появилось желание изучить язык программирования. Собственно, интересует какая разница, и существует ли она вообще между С++ и Visual C++? Какую среду разработки используют профессиональные...
Описать структуру ZNAK C++
Описать структуру ZNAK, содержащую следующие поля: • Фамилия, имя • Знак зодиака • Дата рождения (массив из 3 чисел). Программа должна выполнять следующие действия: • Ввод с клавиатуры данных в...
C++ CUDA на примерах http://www.cyberforum.ru/cpp-beginners/thread713430.html
Скомпилировал из данной книги несколько вариантов программы(не важно какой): с глобальной, константной, текстурной памятью. Измерил, как описано в коде, время выполнения кода CUDA функциями:...
C++ Сортировка массива указателей на абстрактный базовый класс Я создал абстрактный базовый класс (с названием Base) и два производных класса (с названиями Two и Three). После инициализации объектов производных классов каждый из этих объектов имеет два... подробнее

Показать сообщение отдельно
igorrr37
1648 / 1276 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
30.11.2012, 17:09
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#include <iostream>
#include <Windows.h>
#include <string>
 
class Translator
{
private:
    struct Node
    {
        Node(std::string const& rus, std::string const& eng) :
            pl(0), pr(0), rus_(rus), eng_(eng){}
        Node* Insert(std::string const& rus, std::string const& eng)
        {
            Node* pret = 0;
            if(rus < rus_)
            {
                if(!pl)
                {
                    pl = new Node(rus, eng);
                    pret = pl;
                }
                else
                {
                    pret = pl->Insert(rus, eng);
                }
            }
            else if(rus > rus_)
            {
                if(!pr)
                {
                    pr = new Node(rus, eng);
                    pret = pr;
                }
                else
                {
                    pret = pr->Insert(rus, eng);
                }
            }
            return pret;
        }
        std::string GetEng(std::string const& rus)
        {
            std::string sret;
            if(rus == rus_)
                sret = eng_;
            else if(rus < rus_)
            {
                if(pl)
                    sret = pl->GetEng(rus);
            }
            else
            {
                if(pr)
                    sret = pr->GetEng(rus);
            }
            return sret;
        }
        void Cleanup()
        {
            if(pl)
            {
                pl->Cleanup();
                pl = 0;
            }
            if(pr)
            {
                pr->Cleanup();
                pr = 0;
            }
            delete this;
        }
        std::string rus_, eng_;
        Node* pl, *pr;
    };
public:
    Translator() : p_(0){}
    Node* Insert(std::string const& s1, std::string const& s2)
    {
        Node* pret = 0;
        if((s1[0] > 0 && s2[0] < 0) || (s1[0] < 0 && s2[0] > 0))
        {
            std::string const& rus(s1[0] < 0 ? s1 : s2);
            std::string const& eng(s1[0] > 0 ? s1 : s2);
            if(!p_)
            {
                p_ = new Node(rus, eng);
                pret = p_;
            }
            else
            {
                pret = p_->Insert(rus, eng);
            }
        }
        return pret;
    }
    std::string GetEng(std::string const& rus) const
    {
        std::string sret;
        if(p_)
        {
            sret = p_->GetEng(rus);
        }
        return sret;
    }
    void Cleanup()
    {
        if(p_)
        {
            p_->Cleanup();
            p_ = 0;
        }
    }
private:
    Node* p_;
    Translator(Translator const&);
    Translator& operator=(Translator);
};
 
int main()
{
    SetConsoleOutputCP(1251);
    Translator d;
    d.Insert("красный", "red");
    d.Insert("black", "чёрный");
    d.Insert("зелёный", "green");
    d.Insert("white", "белый");
    std::cout << d.GetEng("красный") << std::endl;
    std::cout << d.GetEng("чёрный") << std::endl;
    std::cout << d.GetEng("серый") << std::endl;
    std::cout << d.GetEng("красный") << std::endl;
    std::cout << d.GetEng("зелёный") << std::endl;
    d.Cleanup();
    return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru