Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы - Паскаль.doc
Скачиваний:
8
Добавлен:
04.11.2018
Размер:
4.84 Mб
Скачать

Задание 2.

  1. Создать процедуру:

  • определяющую максимальный и минимальный элементы вектора vectorn,

  • сортирующую элементы, находящиеся между ними, по возрастанию.

Перед началом поиска максимального элемента max вектора vectorn принимаем за него элемент vector1. После этого сравниваем остальные элементы вектора vectori (i=2,…,n) с текущим максимумом: если очередной элемент больше текущего максимума max, то сейчас он – текущий максимум. Запоминаем индекс текущего максимума i_max.

Таким же образом определяем минимальный элемент вектора min и его индекс i_min.

Сравниваем индексы найденных элементов:

  • если i_min < i_max , то сортируем элементы вектора от i_min+1 до i_max-1,

  • если i_max < i_min , то сортируем элементы вектора от i_max+1 до i_min-1,

  1. Схема алгоритма решения задачи

2.1. Головная программа:

2.2. Подпрограмма-процедура:

3. Код программы:

Program Variant_0;

Uses WinCrt;

Const n = 10; {задание размера вектора именованной константой}

Type TVect=Array [1..n] Of Integer;{описание нового типа}

Var i, j : Word;

vector : TVect;

min, max, v_min, v_max : Integer;

Procedure Sort_max_min(Var min_vector, max_vector: Integer; Var AA: Array Of Integer);

Var i, j, k, min, max, i_min, i_max, k_nach, k_kon, nn: Integer;

Begin

nn:=High(AA); {индекс последнего элемента открытого вектора}

max:=AA[0];

i_max:=0;

For i:=1 To nn Do {поиск максимального элемента вектора}

If (AA[i]>max) Then

Begin

max:=AA[i];

i_max:=i;

End;

min:=AA[0];

i_min:=0;

For i:=1 To nn Do {поиск минимального элемента вектора}

If (AA[i]<min) Then

Begin

min:=AA[i];

i_min:=i;

End;

min_vector:=min;

max_vector:=max;

If (i_min<i_max) {определяем начало и конец диапазона сортировки}

Then

Begin

k_nach:=i_min+1;

k_kon:=i_max-1;

End

Else

Begin

k_nach:=i_max+1;

k_kon:=i_min-1;

End;

{сортировка элементов между k_nach и k_kon методом “пузырька”}

For i:=k_kon DownTo k_nach+1 Do

For j:=k_nach To i-1 Do

If (AA[j]>AA[j+1]) Then {меняем эти элементы местами}

Begin

k:=AA[j];

AA[j]:=AA[j+1];

AA[j+1]:=k;

End;

End; {процедуры Sort_max_min}

Begin {головной программы}

Randomize; {запуск генератора случайных чисел}

WriteLn('Лабораторная работа №7_2');

WriteLn('Вариант №0');

WriteLn('ИС-11-1');

WriteLn('Пупкин Василий');

WriteLn;

WriteLn('Задайте диапазон случайных чисел');

Write('v_min=');

ReadLn(v_min);

Write('v_max=');

ReadLn(v_max);

For i:=1 To n Do {заполнение вектора случайными числами}

vector[i]:=Random(v_max-v_min + 1) + v_min;

WriteLn;

WriteLn('Исходный вектор:');

For i:=1 To n Do {вывод на экран исходного вектора}

Write(vector[i]:5);

WriteLn;

Sort_max_min(min, max, vector);

WriteLn;

WriteLn('min=', min);

WriteLn('max=', max);

WriteLn;

WriteLn('Полученный вектор:');

For i:=1 To n Do {вывод на экран выходного вектора}

Write(vector[i]:5);

WriteLn;

WriteLn;

End.

4. Компиляция, отладка, тестирование и получение результата: