- •Лабораторная работа №6
- •1. Теоретическая часть
- •1.1. Описание двумерных массивов в языке программирования Pascal.
- •1.2. Ввод и вывод двумерных массивов в языке программирования Pascal.
- •1.3. Основные алгоритмы обработки двумерных массивов.
- •1.4 Пример составления алгоритма и программы на языке Pascal для обработки двумерного массива.
- •2. Практическая часть
- •2.1 Требования к выполнению работы:
- •2.2 Варианты индивидуальных заданий.
- •2.3 Контрольные вопросы и практические задания:
1.4 Пример составления алгоритма и программы на языке Pascal для обработки двумерного массива.
Задание: Дана матрица целых чисел A размером 8х10. Получить массив F1,...,F10, каждый элемент которого равен количеству нулевых элементов в соответствующем столбце матрицы A.
Решение.
Описание массива A выполним в разделе описания типов Type, а описание массива F выполним в разделе описания переменных Var.
Для работы с массивом A сначала необходимо сформировать его элементы. Выполним формирование элементов массива с помощью генератора случайных чисел random. Для обозначения количества строк массива A введем переменную N, а количества столбцов – переменную M. В цикле сразу после формирования элемента массива выполним вывод его на экран.
Далее, поскольку необходимо просматривать элементы матрицы по столбцам, организуем внешний цикл с перебором всех столбцов, а внутренний – с перебором всех строк:
for j:=1 to M do
for i:=1 to N do
При этом перед внутренним циклом выполним обнуление элемента Fj, в который в результате перебора элементов j-го столбца запишется количество нулевых элементов в данном столбце. Во внутреннем цикле будем проверять условие, является ли i-элемент j-го столбца нулевым (Aij=0), и если является, то выполним увеличение Fj на единицу.
После обработки всех элементов матрицы массив F выведем на экран.
1.2.1 Блок-схема алгоритма решения данной задачи выглядит следующим образом:
1.2.2 Текст программы на языке Pascal выглядит следующим образом:
program primer6;
uses crt;
type
matr=array[1..8,1..10] of integer;
var
A:matr;
F:array[1..10] of byte;
i,j,N,M:byte;
Begin
clrscr;
randomize;
N:=8;
M:=10;
writeln('Matrica A:');
for i:=1 to N do
begin
writeln;
for j:=1 to M do
begin
A[i,j]:=random(20)-10;
write(A[i,j]:5);
end;
end;
for j:=1 to M do
begin
F[j]:=0;
for i:=1 to N do
begin
if A[i,j]=0 then F[j]:=F[j]+1;
end;
end;
writeln;
writeln('Matrica F');
for j:=1 to M do
write(F[j]:5);
readkey;
End.
1.2.3 Результаты работы программы:
Matrica A:
7 -4 5 1 7 3 -6 -2 5 5
-7 -8 0 -9 -7 -4 -3 0 7 3
8 2 -5 -8 1 -5 -7 4 7 9
4 5 -7 7 4 8 -7 -2 -8 -3
-2 3 -9 -8 0 -8 -4 5 1 -1
3 4 -2 -2 -8 -5 2 -3 -9 3
2 -9 0 2 -9 -10 5 -6 0 5
-4 2 -2 7 -10 5 -3 -1 7 -6
Matrica F
0 0 2 0 1 0 0 1 1 0
2. Практическая часть
2.1 Требования к выполнению работы:
Составить блок-схему алгоритма и программу для решения индивидуального задания.
Предусмотреть вывод на печать исходных и результирующих матриц, подробных промежуточных и конечных результатов.
Значения элементов матриц задавать либо с помощью генератора случайных чисел random, либо путем ввода с клавиатуры (по выбору студента).
Порядок выполнения работы.
1. Выполнить анализ задания, сформулировать постановку задачи.
2. Составить блок-схему алгоритма.
3. Составить программу на языке Pascal. Предусмотреть ввод исходных данных и вывод результатов на экран.
4. Выполнить проверку работоспособности программы на различных исходных данных.
5. Выполнить анализ полученных результатов.
