Читайте также:
|
|
Program Problem3;
Const
n = 4; m = 5;
Type
s = array [1..m] of integer;
t = array [1..n] of s;
st = array [1..n] of integer;
Var
a: t;
b: st;
{----------------------------------------------------------------------------------------}
Procedure create_two(n, m: integer; var a: t);
Var
i, j: integer;
Begin
writeln('Заданный двумерный массив целых чисел');
randomize;
for i:= 1 to n do
Begin
for j:= 1 to m do
Begin
a[i, j]:= random(201) - 100;
write(a[i, j]:6, ' ')
End;
writeln
End
End;
{----------------------------------------------------------------------------------------}
Procedure maxim_line(n, m: integer; a: t; var b: st);
Var
i, j: integer;
Begin
for i:= 1 to n do
Begin
b[i]:= a[i, 1];
for j:= 1 to m do
if a[i, j] > b[i] then b[i]:= a[i, j];
end;
writeln('Наибольшие элементы каждой строки массива');
for i:= 1 to n do write(b[i]:6, ' ');
writeln
End;
{----------------------------------------------------------------------------------------}
Begin
create_two(n, m, a);
maxim_line(n, m, a, b)
End.
Задание 1
1. Составьте программу, которая бы находила наименьшие элементы строк, а затем из них определяла наименьший элемент всего двумерного массива.
2. Составьте программу нахождения наибольших элементов каждого столбца двумерного массива.
Пример 4. Составьте программу преобразования матрицы в одномерный массив (вектор).
Разберем решение этой задачи на частном примере.
Пусть задана матрица целых чисел:
Ее надо преобразовать в одномерный массив, который назовем B. Число элементов этого массива должно быть равно числу элементов матрицы, т. е. Для этого в начале программы надо зарезервировать не только двумерный массив, но и одномерный.
В программе обязательно нужен счетчик, который бы считал элементы одномерного массива. Пусть в качестве такого счетчика будет переменная k, которой перед началом циклов устанавливается значение 1.
Теперь весь процесс будет выглядеть так. Организуются циклы для перебора элементов двумерного массива (по количеству строк и количеству столбцов).
k:= 1, b[1]:= a[1, 1] = 3, k:= k + 1 = 2; b[2]:= a[1, 2] = -12 и т. д.
В конечном итоге мы должны получить одномерный массив, который и надо вывести на экран. Для матрицы из рассматриваемого примера этот одномерный массив будет таким: 3, -12, 45, 9, 6, 8, -10, 52, 7, 4, 25, -2
Вот процедура, а затем и программа, выполненная по этому алгоритму:
Procedure sprain(n, m: integer; a: t; var b: u);
Var
k, i, j: integer;
Begin
k:= 0;
for i:= 1 to n do
for j:= 1 to m do
Begin
k:= k + 1;
b[k]:= a[i, j]
End
End;
Программа
Program Problem4;
Const
n = 5; m = 6;
Type
s = array [1..m] of integer;
t = array [1..n] of s;
u = array [1..n*m] of integer;
Var
a: t; b: u;
i: integer;
{----------------------------------------------------------------------------------------}
Procedure create_two(n, m: integer; var a: t);
Var
i, j: integer;
Begin
writeln('Заданный двумерный массив целых чисел');
randomize;
for i:= 1 to n do
Begin
for j:= 1 to m do
Begin
a[i, j]:= random(201) - 100;
write(a[i, j]:6, ' ')
End;
writeln
End
End;
{----------------------------------------------------------------------------------------}
Procedure sprain(n, m: integer; a: t; var b: u);
Var
k, i, j: integer;
Begin
k:= 0;
for i:= 1 to n do
for j:= 1 to m do
Begin
k:= k + 1;
b[k]:= a[i, j]
End
End;
{----------------------------------------------------------------------------------------}
Begin
create_two(n, m, a);
sprain(n, m, a, b);
writeln('Одномерный массив, полученный из двумерного');
for i:= 1 to n*m do write(b[i], ' '); writeln
End.
Пример 5. Сформировать матрицу размерности из случайных чисел от 1 до 100. Расположить их в порядке возрастания по следующей схеме (см. рис. 54):
Рис. 54
Алгоритм
Эта задача является логическим продолжением задачи примера 4. В самом деле, чтобы расположить элементы массива по такой схеме и выполнить условие задачи - упорядочить элементы в порядке возрастания, надо:
1) "растянуть" матрицу в одномерный массив;
2) упорядочить полученный массив в порядке возрастания;
3) "выбрать" из полученного одномерного массива столбцы с расположением элементов по предложенной схеме.
Первый пункт этого алгоритма выполнить нетрудно, основываясь на предыдущем примере.
Упорядочить полученный одномерный массив можно с помощью процедуры быстрой сортировки.
Третий пункт является для нас новым. Чтобы выполнить его, надо заметить следующую закономерность. Если столбец двумерного массива имеет нечетный номер, т. е. 1-й, 3-й, 5-й и т.д., тогда элементы располагаются в порядке возрастания от 1-го элемента столбца до n-го - "сверху вниз".
Если номера столбцов четные, т. е. 2-й, 4-й, 6-й и т. д., тогда элементы располагаются от n-го до 1-го - "снизу вверх".
Теперь можно составить схему программы.
Дата добавления: 2015-07-11; просмотров: 71 | Нарушение авторских прав