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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 56, средняя оценка - 4.91
logo
0 / 0 / 0
Регистрация: 12.09.2011
Сообщений: 3
#1

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

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

Здравствуйте! Возникли проблемы с реализацией одной программы ....Описать класс, реализующий бинарное дерево, обладающее возможностью добавления новых элементов, удаления существующих, поиска элемента по ключу, а также последовательного доступа ко всем элементам.
Написать программу, использующую этот класс для представления англо-русского словаря. Программа должна содержать меню, позволяющее осуществить проверку всех методов класса. Предусмотреть возможность формирования словаря из файла и с клавиатуры....Заранее спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.09.2011, 20:34
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Описать класс, реализующий бинарное дерево (C++):

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

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

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

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

Описать класс, реализующий возможности - C++
Часы. установка времени; перевод на летнее время; перевод на зимнее время; вывести текущее время; ход в течение N секунд (Т=1...100-0) ...

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

6
simply_sash
8 / 8 / 0
Регистрация: 23.08.2011
Сообщений: 14
12.09.2011, 20:37 #2
Цитата Сообщение от logo Посмотреть сообщение
Здравствуйте! Возникли проблемы с реализацией одной программы ...
А в чем проблемы-то. Покажи что не получается.
0
logo
0 / 0 / 0
Регистрация: 12.09.2011
Сообщений: 3
13.09.2011, 17:58  [ТС] #3
проблема в том что не понимаю с чего начинать писать программу:
0
Gepar
1181 / 537 / 20
Регистрация: 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");
}
0
logo
0 / 0 / 0
Регистрация: 12.09.2011
Сообщений: 3
19.09.2011, 15:43  [ТС] #5
спасибо...
0
rangerx
1941 / 1550 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
19.09.2011, 16:15 #6
Цитата Сообщение от logo Посмотреть сообщение
проблема в том что не понимаю с чего начинать писать программу:
Перед тобой стоит задача написать простой ассоциативный массив. Для начала набросай хотя бы сам класс, без реализации методов.
0
fasked
Эксперт С++
4974 / 2554 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
19.09.2011, 16:17 #7
бинарное дерево
0
19.09.2011, 16:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.09.2011, 16:17
Привет! Вот еще темы с ответами:

Описать класс, реализующий стек и работу с ним - C++
Вот вроде понял и что такое стек, и что такое классы и как их реализовать в отдельности. Но как их объеденить в одну программу...

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

Класс бинарное дерево - C++
Здравствуйте. Требуется написать англо-русский словарь на основе бинарного дерева. Не полностью понимаю, как будет выглядеть класс....

Описать класс, реализующий тип данных «вещественная матрица» - C++
Уважаемые гении программирования)) Помогите, пожалуйста написать программу на С++ (VS 2008). Заранее огромное спасибо))) Описать...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru