Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

llerik

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

#include <vcl.h>
#include <iostream.h>
#include <string.h>
#pragma hdrstop
#pragma argsused
// Структура:
struct tree
    {
    string eng;            //слово
    int count;             //количество обращений
    tree *left;
    tree *right;
    };
        string temp_eng;
        int temp_count;
        int level=0;
// Функция создания первого элемента
tree *first (string eng, int count);
// Функция поиска и добавления элемента
tree *search_insert (tree *root, string eng, int count);
// Функция показа дерева
void print_tree (tree *p, int level);
//---------------------------------------------------
// Главная функция:
int main()
        {
        int vibor;
        tree *root=NULL;
        do      {
                cout<<"Najmite: "<<endl;
                cout<<"1| Dobavit slovo v slovar"<<endl;
                cout<<"2| Vihod"<<endl;
                cout<<"3| Vivesti derevo na ekran"<<endl;
                cin>>vibor;
                switch (vibor)
                        {
                        case 1: {cout<<"Vvedite angliskoe slovo: "<<endl;
                                cin>>temp_eng;
                                cout<<"Vvedite znachenie schetchika: "<<endl;
                                cin>>temp_count;
                                //создание первого элемента дерева
                                if (!root) root=first(temp_eng, temp_count);
                                //создание элементо-потомков дерева
                                else tree *root=search_insert (root, temp_eng, temp_count);
                                }; break;
                        case 2: break;
                        case 3: print_tree (root, 0); break;
                        default: cout<<"Нужно нажать клавишу от 1 до 4"<<endl;
                        break;
                        }
                }
        while (vibor!=3);
return 0;
}
// Функция фрмирования первого элемента дерева:
tree *first (string temp_eng, int count)
        {
        tree *pv=new tree;
        pv->eng=temp_eng;
        pv->count=temp_count;
        pv->left=0;
        pv->right=0;
        return pv;
        }
// Функция поиска и добавления элемента в дерево:
tree *search_insert (tree *root, string temp_eng, int temp_count)
        {
        tree *pv=root, *prev;
        bool found=false;
        //поиск по дереву
        while (pv&&!found) {
                prev=pv;
                if (temp_eng==pv->eng) found = true;
                else if (temp_count < pv->count) pv=pv->left;
                else pv=pv->right;
                }
        if (found) return pv;
        //создание нового узла
        tree *pnew=new tree;
        pnew->eng=temp_eng;
        pnew->count=temp_count;
        pnew->left=0;
        pnew->right=0;
        if (temp_count < prev->count)
                prev->left=pnew; //присоединение к левому поддереву предка
        else prev->right=pnew;   //присоединение к правому поддереву предка
        return pnew;
        }
// Функция показа дерева
void print_tree (tree *p, int level)
        {if (p)
                {
                print_tree(p->left, level+1);
                for (int i=0; i<level; i++)
                        cout<<"   ";
                cout<<p->eng<<endl;
                for (int i=0; i<level; i++)
                        cout<<"   ";
                cout<<p->count<<endl;
                print_tree (p->right, level+1);
                }
        }

Всего записей: 8 | Зарегистр. 02-05-2008 | Отправлено: 19:11 09-05-2008 | Исправлено: llerik, 01:09 10-05-2008
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru