Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.05.2012, 22:54   #1
vadiprog
Пользователь
 
Регистрация: 24.09.2011
Сообщений: 96
По умолчанию С++ бинарные деревья

Написать программу, которая выполняет следующие действия:

1. Генерирует с помощью генератора случайных чисел 10 символов латинского алфавита.
2. Из полученных символов строит упорядоченное бинарное дерево, отсортированный в заданном порядке в соответствии с направлением прохождения дерева.
3. Отображает полученное дерево на экране.
4. Осуществляет поиск среди элементов дерева значение введенного с клавиатуры и выводит на экран сообщение о номере найденного элемента согласно порядку прохождения дерева. Если такого элемента нет, то программа выводит сообщение о его отсутствии.


Порядок прохождения дерева - прямой.
vadiprog вне форума Ответить с цитированием
Старый 01.05.2012, 22:58   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

сколько платите за то, чтоб мы за вас задачу решили?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.05.2012, 01:12   #3
vadiprog
Пользователь
 
Регистрация: 24.09.2011
Сообщений: 96
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
сколько платите за то, чтоб мы за вас задачу решили?
Ваша подпись "Хорошо поставленный вопрос это уже половина ответа." Собственно половина ответа уже есть помогите сделать вторую половину
vadiprog вне форума Ответить с цитированием
Старый 02.05.2012, 01:21   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

помочь не заключается в том чтобы сделать за вас.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.05.2012, 14:52   #5
vadiprog
Пользователь
 
Регистрация: 24.09.2011
Сообщений: 96
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
помочь не заключается в том чтобы сделать за вас.
Код:
#include <iostream>
#include <ctime>
#include <cstdlib>

using namespace std;

template<typename T> struct vertex{
T value;
vertex* left;
vertex* right;
};

template<typename T> void insert(vertex<T>* head, T element){
if(head->value == element) 
return;
else{
if(head->value < element){
if(head -> left == NULL){
head -> left = new vertex<T>;
head -> left -> value = element;
head -> left -> left = NULL;
head -> left -> right = NULL;
}
else{
head = head->left;
insert(head,element);
}
}
else
if(head->value > element){
if(head -> right == NULL){
head -> right = new vertex<T>;
head -> right -> value = element;
head -> right -> left = NULL;
head -> right -> right = NULL;
}
else{
head = head->right;
insert(head,element);
} 
}
}

}
template<typename T> int find (vertex<T>* head, T element, int *l)
{
if(head==NULL){
*l=0;
return *l;
}
if(head->value==element) return *l;

if (head->left) {
*l+=1;
find(head->left, element, l);
}

if (head->right) {
l+=1; 
find(head->right, element, l);
}
}

template<typename T> void show_bin_tree (vertex<T>* head, int n) 
{ 
if (head->left) 
show_bin_tree(head->left, n+1); 

for (int i = 0; i < n; i++) cout << " "; 
cout << head->value << '\n'; 

if (head->right) 
show_bin_tree(head->right, n+1); 
}

int main(){

vertex<char>* head = new vertex<char>;
head->left = NULL;
head->right = NULL;
srand(time(NULL));
head->value = (char)(rand()%('z'-'a')+'a');


const int max=9;
char arr[max], chr; int n=0;
bool b;

while (n<9){
b=true;

chr=(char)(rand()%('z'-'a')+'a');

for (int i=0; i<=n; i++){
if (arr[i]==chr){
b=false;
}
}

if (b){
arr[n]=chr;
++n;
}
}


for(int i = 0; i<9; i++)
insert(head,arr[i]);

cout << endl;
int l=0;
show_bin_tree (head, l);

char ch;
cin >> ch;

if(find(head, ch, &l))
cout << "Element found " << l;
else cout << "Element not found";

system("pause");
return 0;

}
Вот вроде программа для восходящего порядка прохождения дерева.
vadiprog вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Бинарные деревья ZevS13 Общие вопросы C/C++ 0 18.11.2011 17:54
Бинарные деревья sunny_alice Паскаль, Turbo Pascal, PascalABC.NET 0 12.05.2011 23:06
Бинарные деревья Aleks_90 Помощь студентам 0 07.06.2009 15:06
Бинарные деревья Марсель059 Общие вопросы C/C++ 3 20.05.2009 21:47
бинарные деревья. ribka Помощь студентам 2 30.11.2007 18:13