1 / 1 / 0
Регистрация: 12.09.2011
Сообщений: 3
1

Описать класс, реализующий бинарное дерево

12.09.2011, 20:34. Показов 13978. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Возникли проблемы с реализацией одной программы ....Описать класс, реализующий бинарное дерево, обладающее возможностью добавления новых элементов, удаления существующих, поиска элемента по ключу, а также последовательного доступа ко всем элементам.
Написать программу, использующую этот класс для представления англо-русского словаря. Программа должна содержать меню, позволяющее осуществить проверку всех методов класса. Предусмотреть возможность формирования словаря из файла и с клавиатуры....Заранее спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.09.2011, 20:34
Ответы с готовыми решениями:

Описать класс, реализующий бинарное дерево
помогите ..ребят знаю что обсуждалось уже кучу раз..но у мне выдаёт ошибки..разобраться не...

Описать класс, что реализует бинарное дерево
Доброго времени суток. Может кто-то поделиться готовым кодом или примером для такого задания:...

Описать класс, реализующий стек
Всем привет, нуждаюсь в помощи. Описать класс, реализующий стек. Написать программу, использующую...

Описать класс, реализующий стек
Очень нужна хоть какая-нибудь помощь! У меня никак не получается написать программу а заказывать...

6
8 / 8 / 2
Регистрация: 23.08.2011
Сообщений: 14
12.09.2011, 20:37 2
Цитата Сообщение от logo Посмотреть сообщение
Здравствуйте! Возникли проблемы с реализацией одной программы ...
А в чем проблемы-то. Покажи что не получается.
0
1 / 1 / 0
Регистрация: 12.09.2011
Сообщений: 3
13.09.2011, 17:58  [ТС] 3
проблема в том что не понимаю с чего начинать писать программу:
0
1186 / 542 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
13.09.2011, 19:39 4
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
/*  Вариант: 2 (задание №2)(BK55)
*  Задание: Вершина двоичного дерева содержит
*  массив целых и два указателя на правое и
*  левое поддерево. Массив целых в каждом
*  элементе упорядочен, дерево в целом также
*  упорядочено. Функция включает в дерево
*  целую переменную с сохранением упорядоченности.
*/
 
#include <stdio.h>
#include <windows.h>
#include <string.h>
#include <conio.h>
 
#define N 2 //Размер массива в дереве
 
// Элемент дерева.
struct tree
{
int s[N]; //Массив целых чисел.
  int count; //Число занятых элементов в массиве 's'.
tree *left; //Указатель на левый потомок дерева
  tree *right; //Указатель на правый потомок дерева.
};
 
//Прототипы функций и глобальные переменные.
 
void About(void);
void printsk (char* format,...);
int menu_select(void); /* Выбор пункта меню. */
void enter(struct tree *usel); /* Ввод числа. */
void show(struct tree *usel); /* Вывод чисел на экран. */
void insert(int number, struct tree *usel);/* Вставка нового числа. */
struct tree *first(void); /* Создание вершины дерева. */
 
int main ()
{
About (); /* Вывод информации о программе и авторе. */
 
  struct tree *pbegin = first(); //создание пустой вершины дерева.
  /* Объявление используемых в программе локальных переменных. */
  char choice;
  /* Меню. */
for(;;) {
   choice = menu_select();
   switch(choice) {
     case 1: enter(pbegin); //Ввод числа
       break;
     case 2: show(pbegin); //Вывод чисел на экран
       break;
     case 3: exit(0); //Выход из программы.
   }
 }
 
  getchar(); /* Заглушка. */
return 0;
  /* Конец программы. */
}
 
/*-----------------------------------------------------------------------*/
/* Выбор пункта меню. */
int menu_select(void)
{
char s[50];
int c;
printsk("\n1. Ввод числа\n");
printsk("2. Вывод всех чисел на экран\n");
printsk("3. Выход\n");
do {
   printsk("\nВведите номер нужного пункта: ");
   scanf("%s",&s);
   c = atoi(s);
 } while(c<0 || c>3);
 return c;
}
 
/*-----------------------------------------------------------------------*/
/* Ввод строки */
void enter (struct tree *usel)
{
clrscr(); //Очистка экрана.
printsk ("Введите число: \n");
int num;
  scanf("%d", &num);
  insert (num, usel);
}
 
/*-----------------------------------------------------------------------*/
/* Создание вершины дерева. */
struct tree *first(void)
{
struct tree *pv = new struct tree;
  for (int j = 0; j < N; j++) pv->s[j]=0;
  pv->left = NULL;
  pv->right = NULL;
  pv->count = 0;
  return pv;
}
 
/*-----------------------------------------------------------------------*/
/* Вывод строк на экран. */
void show(struct tree *usel)
{
if(!usel) return;
  show(usel->left);
  if(usel->s[0]) for (int m = 0; m < usel->count; m++) printsk(" %d\n", usel->s[m]);
  show(usel->right);
}
 
/*-----------------------------------------------------------------------*/
/* Упорядоченная вставка нового числа в дерево */
void insert(int number, struct tree *usel)
{
//Если массив полностью пуст.
  if (usel->count == 0)
  {
usel->s[0] = number;
     usel->count = 1;
     return;
  }
 
  //Если массив полностью заполнен.
  if (usel->count == N)
  {
  //Если число из диапозона чисел в данном массиве.
     if (number > usel->s[0] && number <= usel->s[N-1])
     {
//То нужно вставить в текущий массив, а последнее рекурсивно в правую ветку.
        int temp = usel->s[N-1]; //Запоминаем последнее число из массива.
        //Ищем место вставки
        int k = 0;
        for (k = 0; k < N; k++) if (number <= usel->s[k]) break;
//Раздвигаем массив
        for (int temp_2 = N-1; temp_2 > k; temp_2--)
        usel->s[temp_2] = usel->s[temp_2-1];
        //Копируем число в массив.
        usel->s[k] = number;
        //Проверяем существуют ли ветки дерева, если нет, то создаем.
        if (usel->left == NULL)
        {
        usel->left = first();
           usel->right = first();
        }
        insert (temp, usel->right);
        return;
     }
     else
     { //Если не входит в диапозон чисел данного массива.
//Проверяем существуют ли ветки дерева, если нет, то создаем.
        if (usel->left == NULL)
        {
        usel->left = first();
           usel->right = first();
        }
      if (number <= usel->s[0]){ insert (number, usel->left); return;}
        if (number > usel->s[N-1]){ insert (number, usel->right); return;}
     }
  }
 
  //Если есть место в текущем массиве.
  if (usel->count < N)
  {
//Ищем место включения числа в массив.
     int m = 0;
     for (m = 0; m < usel->count; m++)
      if (number <= usel->s[m]) break;
     //Раздвигаем массив
     for (int v = usel->count; v > m; v--)
     usel->s[v] = usel->s[v-1];
     //Записываем 'number' в массив
     usel->s[m] = number;
     usel->count++;
     return;
  }
}
 
/*-----------------------------------------------------------------------*/
/* Преобразования кодовой таблицы для Windows */
void printsk (char* format,...)
{
char buf[100];
va_list ptr;
CharToOem(format,buf);
va_start(ptr,format);
vprintf(buf,ptr);
}
 
/* Функция выводит информацию и названии программы и ее авторе */
void About (void)
{
printsk("\n               Работа с деревьями   v.1.0\n\n");
printsk("Автор: \n");
printsk("Назначение: Упорядоченное дерево из целых чисел.\n");
}
1
1 / 1 / 0
Регистрация: 12.09.2011
Сообщений: 3
19.09.2011, 15:43  [ТС] 5
спасибо...
1
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
19.09.2011, 16:15 6
Цитата Сообщение от logo Посмотреть сообщение
проблема в том что не понимаю с чего начинать писать программу:
Перед тобой стоит задача написать простой ассоциативный массив. Для начала набросай хотя бы сам класс, без реализации методов.
0
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
19.09.2011, 16:17 7
бинарное дерево
0
19.09.2011, 16:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.09.2011, 16:17
Помогаю со студенческими работами здесь

Описать класс, реализующий возможности
Часы. установка времени; перевод на летнее время; перевод на зимнее время; вывести текущее время;...

Описать класс, реализующий стек
Описать класс, реализующий стек. Написать программу, использующую этот класс для моделирования...

Исходное бинарное дерево превратить в бинарное дерево поиска, при этом сохранив его структуру
Помогите, не могу понять!( Нужно исходное бинарное дерево превратить в бинарное дерево поиска, при...

Описать класс, реализующий стек и работу с ним
Добрый день. Написал программу, суть которой в том, что нужно описать класс, реализующий стек. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru