Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab8 pas.docx
Скачиваний:
14
Добавлен:
15.03.2016
Размер:
287.35 Кб
Скачать

4 Нахождение экстремумов

4-1Дана прямоугольная матрица А(10,15), заполненная случайными числами в диапазоне от 0 до 29 включительно. Найти максимальное значение элементов данной матрицы.

4-2 В задачах обработки массивов часто встречается необходимость одновременного поиска экстремальных элементов массива (с минимальным и максимальным значениями).

Исходными данными являются:

- массив целых чисел М.

Результат:

  • минимальный элемент Мin1,

  • максимальный элемент Мах1.

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

5 Суммирование элементов строк матрицы

В матрице М2 подсчитать суммы элементов каждой строки. Cхема программы– на рисунке.

6 Перестановка элементов массива

6-1 Для обмена значениями двух элементов массива необходимо использовать вспомогательную переменнуюдля временного хранения одного из элементов. Схема такого обменаi-го иj-го элементов массива М1 и фрагменты программы, описывающий обменi-го иj-го элементов массива М1 через вспомогательную переменнуюKприведены на рисунке.

6-2 Дан массив А(40), заполненный датчиком случайных чисел. Поменять местами 1-й элемент с последним элементом, 2-ой элемент с предпоследним и т.д.

7 Преобразование матрицы

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

program preobr;

type

matrica=array[l..15,1..15] of real;

var

a:matrica;

i, j,n,m: integer;

s: real;

begin

write' (' Bведите n k m:');

readln(n,m);

for i:=1 to n do ,

for j:=1 to m do

begin

write ('a[‘,i',',',],'] = ');

read (a[i,j]);

end;

writeln ('Исходная матрица:');

for i:=l to n do

begin

for j:=1 to m do

write (a[i,j]:8:3,' ‘);

writeln

end;

for i:=1 to n do

begin

s:=0;

for j:=1 to m do

s:=s+a[i,j]; {вычисление суммы элементов строки}

a[i,1]:=s/m; {присваивание среднего значения элемента первому элементу строки}

end;

writeln ('Преобразованная матрица:');

for i:=l to n do

begin

for j:=1 to m do

write (a[i,j]:8:3,' ');

writeln

end;

end.

8 Формирование нового массива из значений элементов матрицы

8-1Дана матрица, состоящая из 10 строк и 5 столбцов и заполненная случайными числами в диапазоне от 0 до 29. Сформировать одномерный массивSUM из сумм значений элементов каждого столбца матрицы.

8-2 Написать программу, которая формирует двумерный массив 2 (матрицу B), являющийся «зеркальным отражением» по горизонтали (относительно вертикальной границы) исходного массива 1 (матрица А).

Примечание: данный алгоритм используется в графических редакторах для получения зеркального отражения картинки.

Дано:

Массив 1 Массив 2

11 30 0 25 25 0 30 11

12 8 3 1 1 3 8 12

42 64 8 37 37 8 64 42

7 15 24 22 22 24 15 7

Решение:

Program otr;

USES CRT;

VAR A,B: ARRAY [1..100,1..100] OF INTEGER;

N,I,j:WORD;

BEGIN

CLRSCR; {Очистка экрана}

{----- Ввод размерности массива -----}

REPEAT {цикл с постусловием}

{Повтор ввода размерности N,}

{до тех пор, пока она не войдёт}

{в диапазон 1-100}

WRITE(’Введите размерность массива (1-100): ’);

READLN(N);

UNTIL (N>=2) AND (N<=100) {условие выхода из цикла}

{----- Заполнение исходного массива А -----}

FOR i:=1 TO N DO

FOR j:=1 TO N DO

A[i,j]:=(RANDOM(99));

{----- Вывод исходного массива А-----}

FOR i:=1 TO N DO

FOR j:=1 TO N DO

BEGIN

WRITE(A[i,j]:3);

IF j=N THEN WRITELN

END;

WRITELN;

{----- Формирование массива B -----}

FOR i:=1 TO N DO

FOR j:=1 TO N DO

B[i,N-j+1]:=A[i,j];

{----- Вывод массива B -----}

FOR i:=1 TO N DO

FOR j:=1 TO N DO

BEGIN

WRITE(B[i,j]:3);

IF j=N THEN WRITELN

END;

END.

Комментарии. В описательной части объявлены два одинаковых массива A и B максимальной размерностью 10000 элементов (100×100).

В программе используется:

  1. цикл с пост условием для ввода размерности массива.

Оператор REPEAT нужен, чтобы значение рабочей размерности массивов не вышло за пределы, определённые в описании (до тех пор, пока не будет введено число от 2 до 100, будет происходить запрос на его ввод).

  1. цикл (в цикле) «Заполнение исходного массива А».

В блоке «Заполнение исходного массива А» происходит присвоение элементам исходного массива случайных значений в диапазоне от 0 до 99. Эту задачу выполняет стандартная функция RANDOM.

  1. цикл (в цикле) «Вывод исходного массива А».

Блок «Вывод исходного массива А» выводит сформированный массив A на экран. Вывод производится построчно. Как только выведен последний элемент очередной строки, процедура WRITELN переводит курсор на новую строку экрана.

  1. цикл (в цикле) «Формирование массива B»

Основную работу выполняет блок «Формирование массива B». Каждый элемент исходного массива A записывается в массив B так, чтобы его положение в массиве B было зеркальным по отношению к A. Вычисление необходимого номера столбца массива B происходит по формуле N-j+1, где N – количество столбцов, j – номер текущего столбца массива A.

  1. цикл (в цикле) – вывод на экран сформированного массива B.

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