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

Var I: Word;

s: Integer;

Begin

s:= 0;

For i:=0 To High(a) Do нумерация элементов начинается с нуля!

s:= s + a[i]; номер последнего элемента определяется с

summa:= s; помощью функции High

End;

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

Примеры:задать целочисленный векторaдлинойnэлементов случайным образом с элементами отm_minдоm_max..

1.Определить минимальныйminи максимальныйmaxэлементы вектора и их индексыi_min, i_max. Результаты сохранить в текстовом файлеout_min_max.txt:

Program Primer_1;

Uses CRT;

Const n = 10; размер вектора

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

m_max = 50; элементов вектора

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

Var I, i_min, i_max: Word;

min, max: Integer;

a : TVector;

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

Procedure Init(elem_min, elem_max: Integer; Var Vector: Array Of Integer); используется открытый массив Vector

Var I: Word;

Begin

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

For i:=0 To High(Vector) Do задание элементов массива случайными числами в диапазоне от elem_min до elem_max

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

End;

Procedure Min_max(m: Word; vector: TVector; Var min, max: Integer; Var i_min, i_max: Word); используется массив vector типа TVector

Var I: Word;

Begin

min:=vector[1]; перед поиском минимального и максимального элементов

max:=vector[1]; массива за таковые принимается первый элемент i_min:=1; массива

i_max:=1;

For i:=2 To m Do поиск начинаем со второго элемента

Begin

If (vector[i] < min) Then

Begin

min:=vector[i];

i_min:=i;

End;

If (vector[i] > max) Then

Begin

max:=vector[i];

i_max:=i;

End;

End;

End;

Begin

ClrScr;

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

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

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

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

For i:=1 To n Do

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

WriteLn(out_min_max);

Min_max(n, a, min, max, i_min, i_max); поиск элементов массива

WriteLn(out_min_max, ‘min=’, min);

WriteLn(out_min_max, ‘i_min=’, i_min);

WriteLn(out_min_max, ‘max=’, max);

WriteLn(out_min_max, ‘i_max=’, i_max);

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

ReadLn;

End.

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

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

-1 -19 -19 -35 50 26 -47 17 1 -7

min=-47

i_min=7

max=50

i_max=5

2.Отсортировать элементы массива методомпростого выбора: в массиве отыскивается минимальный элемент и меняется с первым элементом массива, из оставшихся элементов снова находится минимальный и меняется со вторым элементом, и так далее. Последний, самый большой элемент, сам станет на свое место. Результаты сохранить в текстовом файлеout_sort.txt:

Program Primer_2;

Uses CRT;

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

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

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

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