Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Линейные массивы

.pdf
Скачиваний:
10
Добавлен:
10.06.2015
Размер:
562.3 Кб
Скачать

Линейные массивы

Массив объединяет элементы одного типа данных. Всему набору данных присваивают общее имя - имя массива. Каждый элемент массива определяется с помощью индекса, определяющего место этого элемента в общем наборе.

Задача 1: Составить программу подсчета суммы и произведения элементов одномерного массива.

program sum_prois;

Uses crt; const

n = 100; var

a: array [1..n] of real; nk, i: integer;

p, s: real; begin

clrscr; s := 0; p := 1; writeln('введите размер массива'); readln(nk);

writeln('введите элементы массива'); for i := 1 to nk do

readln(a[i] );

for i := 1 to nk do begin

s := s + a[ i ]; p := p * a[ i ];

end;

writeln('Сум. = ', s, 'Произ. =', p); end.

1.при накапливании суммы - s=0

2.при подсчете произведения - p=1.

Задача рассчитана на обработку массива с максимальным размером 100 элементов (n=100).

Конкретный размер массива вводится с клавиатуры (nk). При каждом прохождении через цикл с клавиатуры вводится только один элемент массива. Два цикла for можно было объединить в один.

Задача 2: Составить программу подсчета суммы только тех элементов массива, целая часть которых - нечетная.

program sum; const

n = 100; var

a: array [1..n] of real; s: real;

nk, i: integer; begin

s := 0;

writeln('введите n<=100'); readln(nk); for i := 1 to nk do

begin

writeln('введ.', i, '- й элемент массива'); readln(a[ i ] );

if odd(trunc(a[ i ])) then s := s + a[ i ]; end;

writeln('Сумма нечетных элементов = ', s); end.

Ввод и обработка элементов массива производится в одном цикле.

Функция trunc (a[ i ] ) - выделяют целую часть каждого элемента.

Функция odd - вырабатывает значение TRUE - если целая часть элемента массива - нечетное число, и этот элемент попадает в сумму.

Оператор writeln (odd ( trunc(x)) - выдает на печать:

TRUE - если x - нечетное; FALSE - если x - четное.

Задача 3: Дан массив a(n). Найти max элемент и определить его номер.

program maks; var

a: array [1..100] of real;

i, n, k: integer;

max: real;

 

begin

 

 

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

Для поиска min - достаточно изменить

readln(n);

 

a[i]<min.

writeln('введите элементы массива'); for i := 1 to n do

readln(a[ i ] ); max := a[1];

k := 1;

for i := 1 to n do if a[i] > max then begin

max := a[i]; k := i;

end;

writeln('max =', max, ' N=', k); end.

Заполнение массива с использованием генератора случайных чисел

Randomize - это процедура которая используется в Паскаль для включения генератора случайных чисел.

Функция Random определяет диапазон случайных чисел. Т.е. функция random возвращает нам число в интервале от 0 до 1. Для получения целых случайных чисел от 0 до N следует использовать функцию Random(N+1). Чтобы выбрать целое случайное число из интервала [a, b] можно применить выражение Random(b-a+1)+a.

5 до 29 = 29 - 5 + 1 = random(25) + 5 -1 до 13 = 13 + 1 + 1 = random(15) – 1 a[i]:=chr(random(65));

Задача 4: Сформировать и распечатать массив из 20 целых случайных чисел от 10 до 100. Найти сумму элементов массива.

program pr4; var

A: Array [1..20] Of Integer; I, S: Integer; begin

S := 0; {обнуляем значение суммы}

Randomize;

for I := 1 To 20 Do begin

A[I] := Random(91) + 10;{формирование элементов массива}

Write(A[I], ' '); {вывод массива}

S := S + A[I]; {суммирование элементов массива} end;

writeln; writeln('сумма=', S);

end.

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

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

На практике интересны методы сортировки, которые позволяют экономно использовать оперативную память, поэтому целесообразно рассмотреть только методы, не требующие использования дополнительных массивов. Такие методы в практике программирования называют прямыми. Самыми простыми из прямых методов являются:

• метод выбора;

• метод вставки;

• метод обменов (метод пузырька).

Метод выбора

Сортировка посредством выбора представляет собой один из самых простых методов сортировки. Он предполагает такую последовательность действий.

Сначала находим минимальный элемент массива. Найденный элемент меняем местами с первым элементом. Затем повторяем процесс с n-1 элементами, начиная со второго, потом с n-2 элементами, начиная с третьего и т.д. до тех пор, пока не останется один, самый большой элемент массива.

Задача. Разработать программу сортировки элементов массива А(n), где n <= 20 (метод выбора)

program sortl;

{меняем местами

найденный минимум и первый

var

элемент текущего

массива}

a: array[1..20] of real;

a[imin] :=

a[j];

j, i, n, imin: integer;

a[j] := min;

min: real;

end;

 

begin

for i := 1 to

n do Write(a[i]:6:2);

Writeln('Введите количество чисел n< =20:');

Writeln;

 

Readln(n);

end.

 

Writeln('Введите массив:'); for i := 1 to n do Read(a[i]); Readln;

for j := 1 to n - 1 do {цикл поиска минимальных элементов массива} begin

min := a[j]; {начальное значение для поиска минимума}

imin := j; {начальное значение индекса минимального элемента} for i := j + 1 to n do {цикл поиска минимума и его индекса}

if a[i] < min then {если элемент меньше уже найденного минимального} begin

min := a[i]; {запоминаем элемент} imin := i{запоминаем его индекс}

end;

Метод вставки

В исходном состоянии считают, что сортируемая последовательность состоит из двух последовательностей: уже сортированной (она на первом шаге состоит из единственного - первого элемента) и последовательности элементов, которые еще необходимо сортировать. На каждом шаге из сортируемой последовательности извлекается элемент и вставляется в первую последовательность так, чтобы она оставалась сортированной. Поиск места вставки осуществляют с конца, сравнивая вставляемый элемент аi с очередным элементом сортированной последовательности аj. Если элемент ai больше аj, его вставляют вместо аj+1, иначе сдвигают аj вправо и уменьшают j на единицу. Поиск места вставки завершают, если элемент вставлен или достигнут левый конец массива. В последнем случае элемент аi вставляют на первое место.

Разрабатывая алгоритм, избавимся от проверки достижения начала массива. Прием, позволяющий отменить эту проверку, называется «установкой барьера». С использованием этого приема проверка организуется так, чтобы из цикла поиска места вставки в любом случае происходил выход по первому условию. Для этого достаточно поместить вставляемый элемент перед первым элементом массива, как элемент с индексом 0. Этот элемент и станет естественным барьером для ограничения выхода за левую границу массива.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]