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

Динамические структуры данных Вариант 18 Павловской - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Выделить в тексте лишние пробелы между словами http://www.cyberforum.ru/cpp-beginners/thread34967.html
ЕЩе одна задачка из Павловской... Прошу помощи!!! Если вам лень решать всю задачу, то меня очень интересует второй пункт... Но буду рад решению всей задачи ;) С помощью текстового редактора создать файл, содержащий текст, длина которого не превышает 500 символов (длина строки текста не должна превышать 70 символов). Имя файла должно иметь расширение DAT. Написать программу, которая: -...
C++ Вычислить значение е^х через разложение в ряд Задали задачку....вот немогу реить,неполучается с условием пишет ошибку Вычеслить значение е (в степени) х ,используя ряд е^x=1+х/1!+x^2/2!+......+x^n/n! x-произвольно точность вычислений: /a(n+1)-a(n)/<=0.001; n=1,2,3..... Вывести результат с пояснительным текстом. http://www.cyberforum.ru/cpp-beginners/thread34953.html
C++ Удаление n символов из строки
Доброго времени суток, уважаемые жильцы этого форума! Я еще только учусь, так что у самого ума не хватает) Никак не могу решить задачу. Задача: Из произвольного текста, содержащего не более 10 строк, в каждой строке не более 80 символов, напечатать и удалить слова заданной длины. Полученный текст напечатать. Буду очень благодарен за помощь!!! Добавлено через 17 часов 56 минут 5 секунд...
C++ Замена десятичных констант на шестнадцатеричные
//Реализовать в виде функции, использующей для работы со строкой только указатели и операции вида *p++, p++ и т.д. функция находит в строке десятичные константы и заменяет их на шестнадцатеричные с тем же значением, например "ааааа258ххх" на "ааааа0х102ххх". прошу знающих людей помочь
C++ Расположение текста на экране, пожалуйста!!!!!!!!! http://www.cyberforum.ru/cpp-beginners/thread34946.html
У меня есть программа, которая выводит на экран содержимое файла! Как я могу изменить располажение текста на экране?(тоесть немного ниже, правее) Работаете в консоли !!!
C++ Разработка программы сортировки распределяющим подсчетом по алгоритму D дали задание по программированию следующее: "Разработка программы сортировки распределяющим подсчетом по алгоритму D." Если кто знает как её сделать, пожалуйста, напишите!!! Добавлено через 16 часов 42 минуты 31 секунду я в долгу не останусь... знаю, что за работу нужно платить:) подробнее

Показать сообщение отдельно
Monte-Cristo
2786 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
23.05.2009, 09:39     Динамические структуры данных Вариант 18 Павловской
ну вот наброски моего друга по бинарному дереву. разберайся
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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
#include <iostream>
using namespace std;
 
/* структура бинарного дерева */
struct Tree
{
    int data; // данные
 
    Tree* parent; // родительский элемент
    Tree* left;  // левое поддерево
    Tree* right; // правое поддерево
};
 
/* вставка элемента */
void TreeInsert(Tree** root, int data)
{
    Tree* parent = NULL; // указатель на предыдущий родительский элемент
    Tree* current = *root; // вспомогательный указатель для перемещения по дереву
 
    /* создаём новый элемент, инициализурем его данными */
    Tree* newelement = new Tree;
    newelement->data = data;
    newelement->left = NULL;
    newelement->right = NULL;
 
    /* в цикле доходим до листьев */
    while (current)
    {
        parent = current;
        if (data < current->data)
            current = current->left;
        else
            current = current->right;
    }
 
    newelement->parent = parent; // устанавлием указатель на родительский элемент
    /* устанавлием указетели в родительском элементе */
    if (!parent) // дерево пустое
        *root = newelement;
    else if (data < parent->data)
        parent->left = newelement;
    else
        parent->right = newelement;
}
 
/* Возвращает минимальный элемент в дереве  */
Tree* TreeMinimum(Tree* root)
{
    while (root->left != NULL)
        root = root->left;
    return root;
}
/*  */
Tree* TreeSuccessor(Tree* root)
{
    if (root->right != NULL)
        return TreeMinimum(root->right);
    Tree* current = root->parent;
    while (current != NULL && root == current->right)
    {
        root = current;
        current = current->parent;
    }
    return current;
}
 
/* удаление элемента */
Tree* TreeRemove(Tree** root, Tree* element)
{
    Tree* current = NULL;
    Tree* temp = NULL;
 
    if (element->left == NULL || element->right == NULL)
        current = element;
    else
        current = TreeSuccessor(element);
 
    if (current->left != NULL)
        temp = current->left;
    else
        temp = current->right;
 
    if (temp != NULL)
        temp->parent = current->parent;
 
    if (current->parent == NULL)
        *root = temp;
    else if (current == current->parent->left)
        current->parent->left = temp;
    else
        current->parent->right = temp;
 
    if (current != element)
        element->data = current->data;
 
    return current;
 
}
 
/* симметричный обход дерева, печать элементов */
void TreePrint(Tree* root)
{
    if (root != NULL)
    {
        TreePrint(root->left);
        cout << root->data << endl;
        TreePrint(root->right);
    }
}
 
/* поиск элемента в дереве */
Tree* TreeSearch(Tree* root, int key)
{
    if (root == NULL || root->data == key)
        return root;
 
    if (key < root->data)
            TreeSearch(root->left, key);
    else
            TreeSearch(root->right, key);
}
 
/* рекурсивное удаление дерева  */
void TreeDelete(Tree* root)
{
    /*  пока есть левые потомки - рекурсивно перемещаемся в левое поддерево */
    if (root->left)
            TreeDelete(root->left);
    /*  пока есть правые потомки - рекурсивно перемещаемся в правое поддерево */
    if (root->right)
            TreeDelete(root->right);
    /* мы в листе - удаляем его */
    delete root;
}
 
int main()
{
    int data; // данные для ввода
 
    /* создаем корень */
    Tree* root = NULL;
 
    /* вводим элементы до ввода некорректного элемента */
    while (true)
    {
        cout << "Enter next element: \n";
        cin >> data;
        if (cin.good()) // проверяем успешность ввода
        {
            cin.ignore(10, '\n'); // очищаем буфер
            TreeInsert(&root, data); // добавляем элемент в дерево
        }
        else
        {
            cin.clear(); // очищаем флаги потока cin
            cin.ignore(10, '\n'); // очищаем буфер
            cout << "Data should be an integer, stop!\n";
            break;
        }
    }
 
    /* Рекурсивный обход с печатью элементов */
    cout << "Your tree: \n";
    TreePrint(root);
 
    /* поиск элемента */
    int key;
 
    cout << "Enter a key to find: ";
    while (true)
    {
        cin >> key;
        if (cin.good())
        {
            cin.ignore(10, '\n');
            break;
        }
 
        cin.clear();
        cin.ignore(10, '\n');
        cout << "Key should be an integer!\n";
    }
 
    Tree* found = TreeSearch(root, key);
    if (found == NULL)
        cout << "There is no such element!\n";
    else
        cout << "Here is your element: " << found->data << endl;
    cout << "Trying to delete the found element...\n";
    TreeRemove(&root, found);
    cout << "Printing your tree again: \n";
    TreePrint(root);
 
    cout << "Exiting...\n";
    /* Освобождение памяти */
    TreeDelete(root);
    return 0;
}
 
Текущее время: 11:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru