Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции / программирование.doc
Скачиваний:
129
Добавлен:
10.02.2014
Размер:
160.77 Кб
Скачать
          1. Алгоритм поиска максимального элемента в массиве и его номера

Дан массив X, состоящий из n элементов. Необходимо найти максимальный элемент массива и номер, под которым он хранится в массиве.

Алгоритм решения задачи следующий. Пусть в переменной с именем max хранится значение максимального элемента массива, а в переменной с именем Nmax – его номер. Предположим, что первый элемент массива является максимальным и запишем его в переменную max, а в Nmax – его номер (т.е. 1). Затем все элементы, начиная со второго, сравниваем в цикле с максимальным. Если текущий элемент массива оказывается больше максимального, то записываем его в переменную max, а в переменную Nmax – текущее значение индекса i.

Соответствующий фрагмент программы имеет вид:

Max:=X[1];

Nmax:=1;

For i:=2 to n do

if X[i]>max then

Begin

Max:=X[i];

Nmax:=I;

End;

Writeln(‘max= ’,max,’ Nmax= ‘,Nmax);

          1. Сортировка массивов

Сортировка – распределение элементов массива по группам в соответствии с определенными правилами.

Линейная сортировка (сортировка отбором)

Идея линейной сортировки (например, по возрастанию) заключается в том, чтобы последовательно просматривая весь массив, отыскать наименьшее число и поместить его на первую позицию, обменяв его с элементом, который ранее занимал первую позицию. Затем просматриваются все остальные элементы массива и выполняется аналогичная операция по отбору из рассматриваемой части массива минимального элемента и обмену местами этого элемента и первого из рассматриваемой части и т.д.

Пример:

program Primer10;

var A: array[1..10] of integer;

i,j,n: integer;

begin

writeln('введите массив');

for i:=1 to 10 do

readln(A[i]);

writeln;

for i:=1 to 10-1 do {изменяется размер неотсортированной части массива}

for j:=i+1 to 10 do {сравнивается i-й элемент неотсортированной части массива со всеми от i+1-го до конца}

begin

if A[i]>=A[j] then

begin

n:=A[i];

A[i]:=A[j];

A[j]:=n;

end;

end;

for i:=1 to 10 do

writeln(A[i]);

end.

где I – используется для указания позиции первого элемента в рассматриваемой части массива;

J – для указания позиции очередного сравниваемого с ним элемента;

Если условие A[i]>=A[j] выполняется, т.е. в неотсортированной части массива найден элемент, меньший, чем первый, то необходимо обменять местами эти элементы.

            1. Генерация случайных чисел

Генерация случайных вещественных чисел (REAL) в диапазоне от 0 до 1 осуществляется с помощью функции RANDOM

x:=random;

Если необходимо генерировать случайные числа в другом диапазоне, то необходимо преобразовать это выражение с помощью операций смещения и масштабирования. Например, для того, чтобы получить случайное число в диапазоне от 10 до 12, необходимо написать:

x:=10+2*random;

Для генерации целых случайных чисел (INTEGER) в диапазоне от 0 до N используется функция RANDOM с аргументом:

            1. x:=random(N);

Для смены базы генерации случайных чисел, чтобы при каждом новом прогоне программы числа были другие, используется процедура RANDOMIZE. Обращение к этой процедуре идёт до обращения к функциям RANDOM.

Соседние файлы в папке лекции