Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Функция для перестроения пирамиды




Функция предназначена для просеивания всех оставшихся элементов после перестановки местами первого и последнего элемента. Функция работает с двумя входными параметрами:

1. a[] – массив цифр, требующий преобразования после перестановки местами граничных элементов.

2. k – переменная указывающая номер элемента с которого начинается выполнение алгоритма.

3. n – переменная указывающая до которого момента выполняется алгоритм.

void downHeap(int a[], long k, long n)

{

// процедура просеивания следующего элемента

// До процедуры: a[k+1]...a[n] - пирамида

// После: a[k]...a[n] - пирамида

int new_elem;

long child;

new_elem = a[k];

while(k <= n/2) // пока у a[k] есть дети

{

child = 2*k;

if(child < n && a[child] < a[child+1]) // выбираем большего сына

child++;

if(new_elem >= a[child])

break;

// иначе

a[k] = a[child]; // переносим сына наверх

k = child;

}

a[k] = new_elem;

}


Главная функция программы

Эта функция отвечает за реализацию диалога с пользователем, защиту от неправильного ввода и последовательный вызов функций в зависимости от действий пользователя.

 

void main()

{

int,key;

//выделяем память под массив

int *arr=new int [10];

//вывод информации для пользователя

cout<<” Vvesti massiv. Otsortirovat' massiv pri pomoshi algoritma \n”;

cout<<” Piramidal'noy sortirivku.\n”;

cout<<endl;

//выбираем способ заполнения массива

cout<<" Vibirite sposob vvoda:"<<endl;

cout<<endl;

cout<<"1 S klaviaturi"<<endl;

cout<<"2 Sluhaynie hisla"<<endl;

//проверка на правильность ввода ключа

do{

cin>>key;

if(key==1||key==2) break;

else cout<<" Ne pravil'niy vvod. Povtorite"<<endl;

}while(1);

//подключаем генератор случайных чисел

randomize();

//функция выбора решения по ключу

switch(key){

case 1:

cout<<"Ishodniy massiv: "<<endl;

for (int i=0;i<10;i++)

{

//заполняем массив

cin>>arr[i];

//проверка правильности ввода чисел

if(cin.fail()){

do {

cout<<" Ne pravil'niy vvod. Povtorite"<<endl;

cin.clear();

cin.ignore();

cin>>arr[i];

}while(cin.fail());

}

}

cout<<endl;

break;

case 2:

cout<<"Sluchainiy massiv: "<<endl;

for (int i=0;i<10;i++)

{

//заполняем массив

arr[i]=random(20)-10;

//выводим его

cout<<arr[i]<<" ";

}

cout<<endl;

break;

}

heapSort(arr, size);

cout<<endl<<"Utogoviy massiv: "<<endl;

for (int i=0; i < 10; i++) {

cout<<arr[i]<<" ";

}

cout<<endl;

delete arr;

getch();

}

Описание работы программного комплекса





Поделиться с друзьями:


Дата добавления: 2015-09-20; Мы поможем в написании ваших работ!; просмотров: 470 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Студент может не знать в двух случаях: не знал, или забыл. © Неизвестно
==> читать все изречения...

2806 - | 2369 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.