«Коллекция данных – сбалансированное дерево поиска»





Скачать 305.47 Kb.
Название«Коллекция данных – сбалансированное дерево поиска»
страница3/3
Дата публикации31.07.2013
Размер305.47 Kb.
ТипЛабораторная работа
100-bal.ru > Военное дело > Лабораторная работа
1   2   3

//Lab2.cpp
#include "tree.h"

#include

#include

void PrintMenu() //функция вывода меню

{

RusText("Главное меню: \n");

RusText("1 - вывод дерева на экран\n");

RusText("2 - опрос размера дерева\n");

RusText("3 - очистка дерева\n");

RusText("4 - проверка дерева на пустоту\n");

RusText("5 - добавление данных\n");

RusText("6 - удаление данных\n");

RusText("7 - поиск\n");

RusText("t - тестирование\n");

RusText("i - меню итератора\n");

RusText("q - выход из программы\n");

}

void PrintItMenu() //функция вывода меню итератора

{

RusText("Меню итератора: \n");

RusText("1 - установка на первый элемент\n");

RusText("2 - установка на последний элемент\n");

RusText("3 - перейти к следующему элементу\n");

RusText("4 - перейти к предыдущему элементу\n");

RusText("5 - вывод текущего элемента\n");

RusText("6 - изменение текущего элемента\n");

RusText("7 - состояние итератора\n");

RusText("q - выход в главное меню\n");

}

void Testing()

{

srand( (unsigned)time( NULL ) );

RusText("\nТестирование:\n");

int i=0, size=0, promah=0, promahR=0, pp=0, deli=0, type=0, rndkey=0, rnddata=0;

double find_summ=0, add_summ=0, del_summ=0;

double find_summR=0, add_summR=0, del_summR=0;

bool pr=false;

BST *TestT=new BST;

BST *TestRT=new RND;

RusText("Выберите тип тестирования (1 - обычное, 2 - вырожденный случай): "); cin>>type;

RusText("Введите количество элементов тестируемого дерева: "); cin>>size;

RusText("Введите процент промахов (0-100): "); cin>>pp;

int ppp=0;

if (pp==0) ppp=0;

else ppp=100/pp;

int *Array=new int[size];

int progress=0;

if (type==1) //Заполнение дерева

{

for(i=0;i
{

if (size>100) if (i%(size/100)==0) cout<

pr=false;

while(!pr)

{

rndkey=(rand()*rand()+rand());

rnddata=rand();

pr=true;

for(int j=0;j
if(Array[j]==rndkey) pr=false;

}

Array[i]=rndkey;

TestT->Add(rndkey, rnddata);

TestRT->Add(rndkey, rnddata);

}

}

else

if (type==2)

{

for(i=0;i
{

if (size>100) if (i%(size/100)==0) cout<

rndkey=i*1000;

rnddata=rand();

Array[i]=rndkey;

TestT->Add(rndkey, rnddata);

TestRT->Add(rndkey, rnddata);

}

}

progress=0;

RusText("Размерности деревьев: "); cout<
cout<<"BST: "<GetSize()<
cout<<"RND: "<GetSize()<
RusText(": Сгенерированы деревья случайных элементов.\n");

for(i=0;i
{

if (size>100) if (i%(size/2/100)==0) cout<

if (ppp!=0 && i%ppp==0) //промах поиска

{

pr=false;

while(!pr) //выбираем несуществующий ключ

{

if (type==1) rndkey=(rand()*rand()+rand());

else rndkey=(double)rand()/RAND_MAX * (size*1000);

rnddata=rand();

pr=true;

for(int j=0;j
if(Array[j]==rndkey) pr=false;

}

}

else //не промах

{

int rndi=(double)rand() / RAND_MAX * (size-1);

//выбираем существующий ключ

rndkey=Array[rndi];

rnddata=rand();

}

try

{

TestT->Search(rndkey);

}

catch (int a)

{

if (a==-1) promah++;

if (a==-2) RusText("Ошибка\n\n");

}

try

{

TestRT->Search(rndkey);

}

catch (int a)

{

if (a==-1) promahR++;

if (a==-2) RusText("Ошибка в RND\n\n");

}

find_summ+=TestT->np_find;

find_summR+=TestRT->np_find;

//удаление

int rndi=(double)rand() / RAND_MAX * (size-1); //выбираем существующий ключ

rndkey=Array[rndi];

deli=rndi;

rnddata=rand();

TestT->Delete(rndkey);

TestRT->Delete(rndkey);

del_summ+=TestT->np_del;

del_summR+=TestRT->np_del;

pr=false; //вставка

while(!pr)

{

if (type==1) rndkey=(rand()*rand()+rand());

else rndkey=(double)rand()/RAND_MAX * (size*1000);

rnddata=rand();

pr=true;

for(int j=0;j
if(Array[j]==rndkey) pr=false;

}

Array[deli]=rndkey;

TestT->Add(rndkey,rnddata);

TestRT->Add(rndkey,rnddata);

add_summ+=TestT->np_add;

add_summR+=TestRT->np_add;

}

RusText(": Поиск завершен ( циклов: "); cout<
RusText(": Удаление завершено ( циклов: "); cout<
RusText(": Вставка завершена ( циклов: "); cout<
RusText("- Результат поиска -\n");

RusText("Трудоемкость BST: "); cout<
RusText(" (промахов : "); cout<


RusText("Трудоемкость RND: "); cout<
RusText(" (промахов : "); cout<


RusText("- Результат вставки -\n");

RusText("Трудоемкость BST: "); cout<
RusText("Трудоемкость RND: "); cout<
RusText("- Результат удаления -\n");

RusText("Трудоемкость BST: "); cout<
RusText("Трудоемкость RND: "); cout<
RusText(":: Теоретическая трудоемкость: "); cout<<1.39*log((double)size)/log(2.0)<
}

void main()

{

srand( (unsigned)time( NULL ) );

char key,key2,key_t;

BST *T=new BST;

BST::Iterator it(T);

RND *RT=new RND;

RND::Iterator itr(RT);

RusText("Выберите тип дерева : 1 - BST, 2 - RND\n");

cin>>key_t;

cout<
if(key_t=='1')

{

while(1)

{

PrintMenu(); //вывод меню

cin>>key;

int k;

int input,input2;

cout<
switch(key)

{

case '1': if (T->Show());

else RusText("Дерево пусто\n\n");

cout<
break;

case '2': RusText("Размерность дерева: "); cout<GetSize()<
break;

case '3': if (T->ClearTree()) RusText("Дерево очищено\n\n");

else RusText("Дерево пусто\n\n");

break;

case '4': if (T->IsEmpty()) RusText("Дерево пусто\n\n");

else RusText("Дерево не пусто\n\n");

break;

case '5': RusText("Введите ключ и данные для вставки: ");

cin>>input; //ключ

cin>>input2; cout<
if (T->Add(input, input2)) RusText("Значение добавлено в дерево\n\n");

else RusText("Ошибка при добавлении\n\n");

break;

case '6': RusText("Введите ключ для удаления: ");

cin>>k; cout<
if (T->Delete(k)) RusText("Элемент удален\n\n");

else RusText("Ошибка при удалении\n\n");

break;

case '7': RusText("Введите ключ для получения данных: ");

cin>>k; cout<
try

{ cout<Search(k)<
catch (int a)

{

if (a==-1) RusText("Узел с данным ключом не найден\n\n");

if (a==-2) RusText("Дерево пусто\n\n");

}

break;

case 't': Testing();

break;

case 'q': return; //выход из программы

default: RusText("нажмите другую клавишу\n\n");

break;

case 'i':

while(1)

{

PrintItMenu(); //вывод меню итератора

cin>>key2;

cout<
switch(key2)

{

case '1': it.first();

break;

case '2': it.last();

break;

case '3': it.next();

break;

case '4': it.prev();

break;

case '5': try

{

cout<<*it<
}

catch(int er)

{

if (er==-1) {RusText("Итератор вне структуры\n\n"); }

}

break;

case '6': try

{

int in;

RusText("Введите новое значение: ");

cin>>in;

*it=in;

}

catch(int er)

{

if (er==-1) {RusText("Итератор вне структуры\n\n"); }

}

break;

case '7': if(it.is_off()) RusText("Итератор вне структуры\n\n");

else RusText("Итератор в рабочем состоянии\n\n");

break;

case 'q': break;

default: RusText("нажмите другую клавишу\n\n");

break;

}

if (key2=='q') break;

}

}

}

}

else if (key_t=='2')

{

while(1)

{

PrintMenu(); //вывод меню

cin>>key;

int k;

int input,input2;

cout<
switch(key)

{

case '1': if (RT->IsEmpty()) { RusText("Дерево пусто\n\n"); break; }

RT->Show();

cout<
break;

case '2': RusText("Размер дерева: "); cout<GetSize()<
break;

case '3': if (RT->ClearTree()) RusText("Дерево очищено\n\n");

else RusText("Дерево пусто\n\n");

break;

case '4': if (RT->IsEmpty()) RusText("Дерево пусто\n\n");

else RusText("Дерево не пусто\n\n");

break;

case '5': RusText("Введите ключ и данные для вставки: ");

cin>>input; //ключ

cin>>input2; cout<
if (RT->Add(input, input2)) RusText("Значение добавлено в дерево\n\n");

else RusText("Ошибка при добавлении\n\n");

break;

case '6': RusText("Введите ключ для удаления: ");

cin>>k; cout<
if (RT->Delete(k)) RusText("Элемент удален\n\n");

else RusText("Ошибка при удалении\n\n");

break;

case '7': RusText("Введите ключ для получения данных: ");

cin>>k; cout<
try

{ cout<Search(k)<
catch (int a)

{

if (a==-1) RusText("Узел с данным ключом не найден\n\n");

if (a==-2) RusText("Дерево пусто\n\n");;

}

break;

case 't': Testing();

break;

case 'q': return; //выход из программы

default: RusText("нажмите другую клавишу\n\n");

break;

case 'i':

while(1)

{

PrintItMenu(); //вывод меню итератора

cin>>key2;

cout<
switch(key2)

{

case '1': itr.first();

break;

case '2': itr.last();

break;

case '3': itr.next();

break;

case '4': it.prev();

break;

case '5': try

{

cout<<*itr<
}

catch(int er)

{

if (er==-1) {RusText("Итератор вне структуры\n\n"); }

}

break;

case '6': try

{

int in;

RusText("Введите новое значение: ");

cin>>in;

*itr=in;

}

catch(int er)

{

if (er==-1) {RusText("Итератор вне структуры\n\n"); }

}

break;

case '7': if(itr.is_off()) RusText("Итератор вне структуры\n\n");

else RusText("Итератор в рабочем состоянии\n\n");

break;

case 'q': break;

default: RusText("нажмите другую клавишу\n\n");

break;

}

if (key2=='q') break;

}

}

}

}

}


1   2   3

Похожие:

«Коллекция данных – сбалансированное дерево поиска» iconКонспект урока по информатике для учащихся 11 класса «Средства поиска данных в Интернете»
Введение. Содержание дисциплины и порядок ее изучения. Фактографический поиск. Математические модели фактографического поиска. Информационная...
«Коллекция данных – сбалансированное дерево поиска» iconРеферат на тему «Сбалансированное питание это здоровье нации»
Здоровье человека важный показатель его личного успеха. Одним из важнейших условий сохранения и укрепления здоровья является сбалансированное...
«Коллекция данных – сбалансированное дерево поиска» iconРеферат на тему «Сбалансированное питание это здоровье нации»
Здоровье человека важный показатель его личного успеха. Одним из важнейших условий сохранения и укрепления здоровья является сбалансированное...
«Коллекция данных – сбалансированное дерево поиска» iconКоллекция/модуль поиска

«Коллекция данных – сбалансированное дерево поиска» iconВ базе данных
Исакова О. Н. Основы поиска патентов в базе данных Европейского патентного ведомства: Препринт 03 – Новосибирск: гпнтб со ран, 2003....
«Коллекция данных – сбалансированное дерево поиска» iconПрограмма дисциплины Технологии поиска, анализа данных и распространения информации в Интернет
Значение проекта Семантическая Паутина для расширения возмож-ностей смыслового поиска информации в сети Интернет
«Коллекция данных – сбалансированное дерево поиска» iconУрока информатики по теме «Табличные базы данных». (Открытый урок.)
Данный урок «База данных. Системы управления базами данных» является первым уроком по теме «Технологии хранения, поиска и сортировки...
«Коллекция данных – сбалансированное дерево поиска» iconКоллекция обивочных тканей
Данная коллекция станет украшением любой модели кроватей. Ткань относится к категории мебельного атласа отличается не только богатым...
«Коллекция данных – сбалансированное дерево поиска» iconОпределитесь с инструментами поиска
Для обнаружения в текстах фрагментов, аналогичных заданному, используются инструменты линейного поиска информации. К таким инструментам...
«Коллекция данных – сбалансированное дерево поиска» iconКоллекция игр
Играющие садятся в круг, ведущий объявляет, что все участники игры, начиная с первого, должны назвать по одному растению, причем...
«Коллекция данных – сбалансированное дерево поиска» iconКоллекция 038 Белгород
Это пример платной текущей распечатки бдкр, вместо контактных данных указаны только номера коллекций и
«Коллекция данных – сбалансированное дерево поиска» iconКоллекция 614 Тюмень
Это пример платной текущей распечатки бдкр по комнатным растениям, вместо контактных данных указаны только
«Коллекция данных – сбалансированное дерево поиска» iconКоллекция 589 Мордовия, Саранск
Это пример платной текущей распечатки бдкр по садовым овощным растениям, вместо контактных данных указаны
«Коллекция данных – сбалансированное дерево поиска» iconПрограмма по формированию навыков безопасного поведения на дорогах...
Сейба, дынное дерево, шоколадное дерево, пальмы, фикусы, гевея, кувшинка Виктория регия
«Коллекция данных – сбалансированное дерево поиска» iconЛитература по химии. Азбука веб-поиска для химиков. Методика поиска...
Химия и жизнь: научно-популярный журнал. Электронная версия научно-популярного журнала. Архив содержаний номеров. Доступ к полной...
«Коллекция данных – сбалансированное дерево поиска» iconТематика контента (источников, баз(ы) данных
Архив (acs legacy Archives) 25-ти журналов коллекция ретроспективных выпусков журналов с 1879 по 1995гг. Реферативные источники


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск