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

Нужно 2 кода слепить в кучу (деревья) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Выпуклость фигуры http://www.cyberforum.ru/cpp-beginners/thread715863.html
Здравствуйте,возникла проблема с нахождением косинуса между векторами и в следствии самого угла #include<iostream.h> #include<math.h> #include<string.h> void main() {double...
C++ Умножение матриц Помогите умножить 2 матрицы размерностью 4х4, нужно создать ф-ю. Я пробовал, не получилось.. typedef int mat44; void mult_mat4(mat44 factor1, mat44 factor2, mat44 result) { printf("\n");... http://www.cyberforum.ru/cpp-beginners/thread715830.html
Вывести на экран таблицу значений функции Y(x)... C++
Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) для x, изменяющегося от a до b с шагом с шагом h=(b– a)/10,
C++ Вызов функции одного класа в другом
Доброго времени суток всем!:) Столкнулся с такой проблемой, не судите строго, только начал изучать ООП и тут возникла трабла... Есть 2 класса CTelephonNumber и COutTownZvonok. В CTelephonNumber...
C++ Функции стандартной библиотеки для отображения одной системы счисления в другую http://www.cyberforum.ru/cpp-beginners/thread715818.html
Вопрос заключается в том, существует ли в стандартной библиотеки функции типа atoi(), но для 2-8-16 ричной системы? И наоборот, которые преобразовывают значение 2-8-16 ричной системы в...
C++ Произвести математические операции над матрицами Помогите пожалуйста! Дано квадратную матрицу А порядка n и вектор b с n елементами. Получить: а) (А^2) x b б) (A-E) × b Где Е - единичная матрица порядка n. Зарание спасибо! подробнее

Показать сообщение отдельно
igorrr37
1648 / 1276 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
02.12.2012, 19:00
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#include <iostream>
#include <Windows.h>
#include <string>
#include <iomanip>
 
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) const // поиск по ключу
        {
            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 Print() const // печать узлов
        {
            if(pl)
                pl->Print();
            std::cout << std::setw(14) << std::left << rus_ << eng_ << std::endl;
            if(pr)
                pr->Print();
 
        }
        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 Print() const // печать всех узлов дерева
    {
        if(p_)
            p_->Print();
    }
    void Cleanup() // освобождение динамической памяти
    {
        if(p_)
        {
            p_->Cleanup();
            p_ = 0;
        }
    }
private:
    Node* p_; // указатель на корневой узел
     // объект Translator нелбзя копировать и присваивать т.к. данные содержатся в динамической памяти
    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;
    d.Print();
    d.Cleanup();
    std::cin.get();
    return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru