Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_р_4.doc
Скачиваний:
3
Добавлен:
27.11.2019
Размер:
105.98 Кб
Скачать

3. Обработка одномерных массивов

В процедурах ввода и вывода нельзя использовать имена массивов, Для ввода и вывода элементов массива необходимо использовать операторы цикла.

Ввод одномерного массива осуществляется поэлементно, например:

For i:=1 to n do Read(a[i]);

или

For i:=1 to n do Readln(a[i]);

В первом фрагменте при вводе исходных данных в качестве разделителя используется пробел, (данные располагаются на одной строке), во втором каждый элемент массива вводится с новой строки. Для удобства работы целесообразно при вводе элементов массива использовать подсказку:

For i:=1 to n do

Begin

Write(‘a[‘,I,’]=’);

Readln(a[i])

End;

Для задания значений элементам массива можно использовать типизирован­ные константы. В отличие от обычных констант в описании типизированной конс­танты указывается как значение константы, так и ее тип. Типизированные констан­ты можно использовать как переменные того же типа.

Например, описание

Сonst a: Array[1…5] of Real = (1.5,-8.6,9.3,1.2,8.7);

задает следующие начальные значения элементов массива А:

а[1]=1.5, a[2]=8.6, a[3]=9.3, a[4]=1.2, a[5]=8.7

Вывод на печать элементов одномерного массива А можно записать так:

Writeln(‘ ’:5, ‘Massiv а’);

For i:=1 to n do Write(a[i]:8:3);

Writeln;

Элементы массива располагаются по 10 в строке. Для вывода элементов массива в стобик нужно в теле цикла заменить процедуру Write на Writeln.

Рассмотрим несколько типовых алгоритмов обработки массивов.

Пример 1. Вычислить сумму элементов заданного одномерного массива a1, a2, … an.

S:=0;

For I:=1 to n do S:=S+a[i];

Пример 2. В заданном одномерном массиве a1,a2,…an подсчитать количество элементов, принадлежащих отрезку [s,t].

k:=0;

For i:=1 to n do

If (a[i]>=s) and (a[i]<=t) then k:=k+1;

Пример 3. В заданном одномерном массиве a1, a2, … an найти максимальный элемент и его порядковый номер.

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

For i:=2 to n do

If a[i]>max then

Begin

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

End;

Пример 4. В заданном одномерном массиве a1, a2, … an поменять местами соседние элементы, если предыдущий элемент меньше последующего.

For i:=1 to n-1 do

If a[i]<a[i+1] then

Begin

t:=a[i]; a[i]:=a[i+1]; a[i+1]:=t

End;

Пример 5. В заданном одномерном массиве найти первое отрицательное число и его номер.

yes:=false; {не найдено число}

For i:=1 to n do {поиск отрицательного числа}

Begin

If a[i]>=0 Then Continue; {число неотриц., след. –на след.число}

Writeln(‘1-е отрицательное число=’, a[i], ‘его номер=’i);

yes:=true; {не найдено число}

Break

End;

If not yes Then

Writeln (‘отрицательных чисел в массиве нет’);

Задания к работе

Разработать программу и тестовый пример для проверки работы программы.

I уровень

В заданном массиве a1, a2, …, an поменять местами максимальный и минимальный элементы. Вывести на печать полученный массив.

  1. В заданном массиве a1, a2, …, an максимальный элемент заменить значением суммы предшествующих ему элементов.

  2. В заданном массиве a1, a2, …, an определить среднее значение его элементов, не учитывая максимальный и минимальный элементы.

  3. В заданном массиве a1, a2, …, an найти значение максимального отрица­тельного элемента и минимального положительного элемента. Если в массиве отсутствуют положительные и отрицательные элементы, то вывести на экран сообщение об этом.

  4. В заданном массиве a1, a2, …, an уменьшить положительные элементы на величину минимального элемента этого массива, а отрицательные элементы увеличить на величину максимального элемента.

  5. Уменьшить все элементы с четными индексами заданного массива a1, a2, …, an на величину минимального элемента этого массива

  6. В заданном массиве a1, a2, …, an определить среднее значение положительных и среднее значение отрицательных элементов.

  7. В заданном целочисленном массиве a1, a2, …, an подсчитать сумму и произведение четных, положительных элементов. Если в массиве отсутствуют подобные элементы, то вывести на экран соответствующее сообщение.

  8. В заданном массиве a1, a2, …, an последовательно слева направо заменить все нулевые элементы полусуммой соседних элементов. Для a1 считать соседним слева элементом an, а для an – соседним справа элементом a1.

  9. В заданном массиве a1, a2, …, an произвести циклический сдвиг элементов на одну позицию влево, т.е. преобразовать к виду a2, a3, …, an, a1.

  10. В заданном массиве a1, a2, …, an произвести циклический сдвиг элементов на одну позицию вправо, т.е. преобразовать к виду an, a1, a2, …, an-1.

  11. В заданном массиве a1, a2, …, an найти среднее геометрическое, а затем все элементы с нечетными индексами уменьшить на величину среднего геометрического.

Указание. Среднее геометрическое вычисляется по формуле:

z=

  1. В заданном массиве a1, a2, …, an найти среднее гармоническое, а затем каждый положительный элемент массива уменьшить на величину среднего гармонического. Указание. Среднее гармоническое вычисляется по формуле:

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