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

Var I: Word;

a : TVector;

out_sort: Text; файловая переменная

Procedure Init(m: Word; elem_min, elem_max: Integer; Var vector: TVector);

Var I: Word;

Begin

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

For i:=1 To m Do задание элементов массива случайными числами в диапазоне от elem_min до elem_max

vector[i]:=elem_max - Random(elem_max - elem_min +1);

End;

Procedure Sort_vybor(m: Word; Var vector: TVector);

Var I, j, k: Word;

temp: Integer;

Begin

For i := 1 To m-1 Do

Begin

k := i;

temp := vector[i];

For j := i + 1 To m Do

If (vector[j] < temp) Then

Begin

temp := vector[j];

k:= j;

End;

vector[k] := vector[i];

vector[i] := temp;

End;

End;

Begin

ClrScr;

Assign(out_sort,’d:\User\out_sort.txt’);

ReWrite(out_sort); открытие текстового файла для записи

Init(n, m_min, m_max, a); инициализация массива

Writeln(out_sort, ‘Исходный вектор:’);

For i:=1 To n Do

Write(out_sort, a[i]:5);

WriteLn(out_sort);

Sort_vybor(n, a); сортировка элементов массива

Writeln(out_sort, ‘Отсортированный вектор:’);

For i:=1 To n Do

Write(out_sort, a[i]:5);

WriteLn(out_sort);

Close(out_sort); закрытие текстового файла

ReadLn;

End.

Результат работы программы:

Исходный вектор:

-15 -31 12 -10 50 -27 36 -29 2 5

Отсортированный вектор:

-31 -29 -27 -15 -10 2 5 12 36 50

3.Отсортировать элементы массива методомпростого обмена (методом пузырька): сравниваются попарно два очередных рядом стоящих элемента и при необходимости переставляются по возрастанию. После первого прохода массива его максимальный элемент становится на последнее место, после второго прохода максимальный из оставшихся становится на предпоследнее место и так далее. Таким образом, после каждого очередного прохода по массиву максимальный элемент из оставшихся как бы всплывает наверх – к концу массива. Всего необходимоn – 1прохода. Результаты сохранить в текстовом файлеout_sort.txt:

Program Primer_3;

Uses CRT;

Const n = 10; размер массива

m_min = -100; диапазон значений

m_max = 100; элементов массива

Type TVector = Array [1..n] Of Integer;

Var I: Word;

a : TVector;

out_sort: Text; файловая переменная

Procedure Init(m: Word; elem_min, elem_max: Integer; Var vector: TVector);

Var I: Word;

Begin

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

For i:=1 To m Do задание элементов массива случайными числами в диапазоне от elem_min до elem_max

vector[i]:=elem_max - Random(elem_max - elem_min +1);

End;

Procedure Sort_obmen(m: Word; Var vector: TVector);

Var I, j, k: Word;

temp: Integer;

Begin

For i := m DownTo 2 Do

For j := 1 To i – 1 Do

If (vector[j] > vector[j+1]) Then

Begin

temp := vector[j];

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

vector[j+1]:= temp;

End;

End;

Begin

ClrScr;

Assign(out_sort,’d:\User\out_sort.txt’);

ReWrite(out_sort); открытие текстового файла для записи

Init(n, m_min, m_max, a); инициализация массива

Writeln(out_sort, ‘Исходный вектор:’);

For i:=1 To n Do

Write(out_sort, a[i]:5);

WriteLn(out_sort);

Sort_obmen(n, a); сортировка элементов массива

Writeln(out_sort, ‘Отсортированный вектор:’);

For i:=1 To n Do

Write(out_sort, a[i]:5);

WriteLn(out_sort);

Close(out_sort); закрытие текстового файла

ReadLn;

End.

Результат работы программы:

Исходный вектор:

47 -14 58 -69 9 -19 -72 24 97 -32

Отсортированный вектор:

-72 -69 -32 -19 -14 9 24 47 58 97

4.Отсортировать элементы массива методомпростых вставок: в уже отсортированной части элементов массиваa1, a2, a3,…,akотыскивается место для следующего элементаak+1. Результаты сохранить в текстовом файлеout_sort.txt:

Program Primer_4;

Uses CRT;

Const n = 10; размер массива

m_min = -150; диапазон значений

m_max = 150; элементов массива

Type TVector = Array [1..n] Of Integer;