Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2012_METODICh_POSOBIE_PASCAL.doc
Скачиваний:
18
Добавлен:
15.09.2019
Размер:
2.97 Mб
Скачать

Лабораторная работа № 9. Обработка двумерных числовых массивов.

При выполнении работы необходимо знать:

  • Знать и уметь строить алгоритмы циклической структуры для обработки двумерных массивов.

  • Знать операторы цикла (смотри лаб. работу № 5).

  • Знать принципы и приемы обработки двумерных числовых массивов с использованием операторов цикла.

  • Уметь составить схему программы (алгоритм) циклической структуры для обработки двумерного числового массива и записать программу по готовому алгоритму.

Теоретический минимум:

Переменные-массивы являются переменными сложного (структурированного) типа и представляют собой организованную группу элементов одного типа (линейную или прямоугольную таблицу).

Массив- это упорядоченная совокупность однотипных данных, имеющая одно общее имя.

Объявление массива. Перед началом работы с массивом необходимо объявить его, а также зарезервировать место в памяти под соответствующие количество элементов.

Объявление двумерного массива в программе:

Type Mas = array [1..5, 1..6] of integer; { объявляем тип массив из 5 строк и 6 столбцов }

{ содержащий элементы целого типа }

Var A, B : Mas; { переменные A, B типа двумерный массив }

Массивы можно объявить и так:

Var A, B : array [1..5, 1..6] of integer;

{ переменные A, B типа массив из 5 строк и 6 столбцов }

Первый способ объявления предпочтительнее.

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

Приведем пример организации ввода двумерного массива целых чисел А [5, 6]. Нулевую строку и нулевой столбец использовать не будем, хотя это допускается.

Ввод элементов двумерного массива с клавиатуры:

For i:=1 to 5 do begin

For j:=1 to 6 do begin

Writeln(‘Введите значение A [’, i, ‘, ’, j ,’]: ’);

Readln(A[i, j]);

End;

End;

При запуске на выполнение необходимо поочередно ввести 30 элементов массива (долго, не всегда удобно).

Ввод элементов двумерного массива случайным образом:

Randomize;

For i:=1 to 5 do begin

For j:=1 to 6 do begin

A[i, j]:=random(200)-100;

End;

End;

При запуске программы на выполнение элементы массива получат случайные значения при помощи генератора случайных чисел Random в интервале [-100; 100[.

Вывод двумерного массива на экран. Осуществляется также при помощи двойного вложенного цикла: необходимо организовать цикл по строкам и цикл по столбцам. Чтобы массив выводился в виде прямоугольной таблицы, необходимо осуществлять вывод элементов через пробел, а затем перевести строку после того, как выведены элементы одной строки. С этой целью между операторами End; завершающими вложенные циклы, ставится пустой оператор Writeln; для перевода строки.

Вывод значений элементов двумерного массива на экран:

ClrScr; { очищение экрана }

For i:=1 to 5 do begin

For j:=1 to 6 do begin

Write(A[i, j] :5);

End;

Writeln;

End;

Обработка двумерных массивов может вестись либо в горизонтальном направлении (по строкам), либо в вертикальном направлении (по столбцам). Если обработка массива ведется по строкам, то внешний (первый) цикл будет по строкам. Если обработка массива ведется по столбцам, то внешний (первый) цикл будет по столбцам.

Естественным направлением просмотра двумерного массива обычно считается горизонтальное. Но если требуется подсчитать какие–либо величины в каждом столбце, то направление просмотра будет вертикальное.

Задача 9.1.

Заполнить двумерный числовой массив B [4, 5] целыми числами. Найти произведение элементов каждого столбца массива.

Математическая формулировка задачи:

Чтобы определить такое произведение, нужно организовать обработку двумерного массива по столбцам. Для каждого столбца вычисляется свое произведение (всего должно получиться 5 ответов, так как имеется 5 столбцов). Будем вычислять произведение каждого столбца при помощи одной и той же переменной Р. Необходимо учесть, что при переходе в каждый новый столбец произведение должно вычисляться сначала, то есть значение Р надо сбрасывать в 1. Чтобы произведение предыдущего столбца при этом не пропадало, необходимо выводить на экран ответ (произведение каждого столбца) сразу после его вычисления, то есть во внешнем цикле. Внешний цикл (по столбцам) выполняется 5 раз, поэтому у нас получится 5 ответов.

Текст программы к задаче 9. 1.

Program Ex_9_1;

Uses Crt;

Type Mas = array [1..4, 1..5] of integer;

{объявляем тип массив из 4 строк и 5 столбцов}

Var

B : Mas; { переменная B типа массив }

P: real; {произведение каждого столбца}

i, j: integer; {индексы массива }

Begin

ClrScr; {очищение экрана}

Textcolor(1); {цвет текста синий}

Randomize;

For i:=1 to 4 do begin

For j:=1 to 5 do begin

B [i, j]:=random(200)-100;

Write(B [i, j]);

End;

Writeln;

End;

For j:=1 to 5 do begin

P:=1;

For i:=1 to 4 do begin

P:=P*B[ i, j];

End;

Writeln( ‘Произведение ‘, j ,’ столбца ’, P);

End;

Readln;

End.

Алгоритм обработки двумерного массива

по столбцам к задаче 9.1.

Задача 9.2.

Заполнить двумерный числовой массив Q [5, 5] целыми числами. Найти среднее арифметическое положительных элементов главной диагонали массива. При выводе массива выделить красным цветом положительные элементы главной диагонали.

Математическая формулировка задачи:

Главная диагональ квадратной матрицы имеет ту особенность, что номера строк и столбцов элементов главной диагонали совпадают, то есть у этих элементов i=j.

Таким образом, у нашего массива элементы главной диагонали будут: Q[1, 1]; Q[2, 2,]; Q[3, 3,]; Q[4, 4]; Q[5, 5]. Чтобы найти среднее арифметическое положительных элементов главной диагонали массива, нужно подсчитать сумму положительных элементов главной диагонали и их количество. Затем необходимо разделить сумму на количество (после выхода из цикла подсчета суммы).

Как при выводе массива выделить красным цветом положительные элементы главной диагонали? Организуем цикл вывода массива и будем проверять, является ли элемент массива положительным и к тому же принадлежащим главной диагонали. Если да, то установим цвет вывода красный, а иначе белый.

Текст программы к задаче 9. 2.

Program Ex_9_2;

Uses Crt;

Type Mas = array [1..5, 1..5] of integer;

{объявляем тип массив

из 5 строк и 5 столбцов}

Var

Q : Mas; {переменная Q типа массив }

Sr: real; {среднее арифметическое}

k: integer; {количество}

i, j: integer; {индексы массива }

Begin

ClrScr; {очищение экрана}

Textcolor(7); {цвет текста белый}

Randomize;

For i:=1 to 5 do begin

For j:=1 to 5 do begin

Q [i, j]:=random(200)-100;

Write(Q [i, j]);

End;

Writeln;

End;

For i:=1 to 5 do begin

If Q[i, i]>0 then begin

k:=k+1;

S:=S+Q[ i, i];

End;

End;

Sr:=S/k;

Writeln( ‘Sr=‘, Sr);

For i:=1 to 5 do begin

For j:=1 to 5 do begin

If (i=j) and (Q[i, j]>0) then

Textcolor(4)

else Textcolor(7);

Write(Q [i, j]);

End;

Writeln;

End;

Readln;

End.

Алгоритм обработки двумерного массива к задаче 9.2.