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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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;            //английское слово
    string rus;            //русский перевод
    int count;             //количество обращений
    tree *left;
    tree *right;
    };
        string temp_eng;
        string temp_rus;
        int temp_count;
        int level=0;
//---------------------------------------------------------------------------
// Прототипы функций:
// Функция создания первого элемента
tree *first (string eng, string rus, int count);
// Функция поиска и добавления элемента
tree *search_insert (tree *root, string eng, string rus, int count);
// Функция показа дерева
void print_tree (tree *p, int level);
//---------------------------------------------------------------------------
// Главная функция:
void main()
        {int vibor;
        tree *root;
    menu2:
    cout<<"Najmite: "<<endl;
    cout<<"1| Dobavit slovo i ego perevod v slovar"<<endl;
       //    cout<<"2) Ввести английское слово и искать его перевод"<<endl;
       //    cout<<"3) Удалить слово из словаря"<<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 russkoe slovo: "<<endl;
                        cin>>temp_rus;
            cout<<"Vvedite znachenie schetchika: "<<endl;
                        cin>>temp_count;
                        //создание первого элемента дерева
                        if (!root) root=first(temp_eng, temp_rus, temp_count);
                        //создание элементо-потомков дерева
                        else tree *root=search_insert (root, temp_eng, temp_rus, temp_count);
                        };
        break;
               case 2: exit(0); break;
                case 3: print_tree (root, 0); break;
                default: cout<<"Нужно нажать клавишу от 1 до 4"<<endl;
                break;}
        goto menu2;
}
//---------------------------------------------------------------------------
// Функции программы:
// Функция фрмирования первого элемента дерева:
tree *first (string temp_eng, string temp_rus, int count)
        {int i;
        tree *pv=new tree;
        pv->eng=temp_eng;
        pv->rus=temp_rus;
        pv->count=temp_count;
        pv->left=0;
        pv->right=0;
        return pv;
        }
// Функция поиска и добавления элемента в дерево:
tree *search_insert (tree *root, string temp_eng, string temp_rus, 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->rus=temp_rus;
        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;
                        for (int i=0; i<level; i++)
                        cout<<"   ";
                        cout<<p->rus;
                        for (int i=0; i<level; i++)
                        cout<<"   ";
                        cout<<p->count;
                        print_tree (p->right, level+1);
                }
        }

Всего записей: 8 | Зарегистр. 02-05-2008 | Отправлено: 00:07 06-05-2008 | Исправлено: llerik, 00:14 06-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