Описать процедуру, формирующую по вещественному массиву A размера K матрицу B размера M Ј N - Pascal ABC
Формулировка задачи:
Описать процедуру Matr(A, K, M, N, B), формирующую по вещественному массиву A размера K матрицу B размера M £ N(матрица заполняется элементами массива A по строкам). «Лишние» элементы массива игнорируются; если элементов массива недостаточно, то оставшиеся элементы матрицы полагаются равными 0. Двумерный массив B является выходным параметром. С помощью этой процедуры на основе данного массива A размера K и целых чисел M и N сформировать матрицу B размера M £ N.
Решение задачи: «Описать процедуру, формирующую по вещественному массиву A размера K матрицу B размера M Ј N»
textual
Листинг программы
uses crt;
const max=15;
type mas=array[1..max] of real;
mtr=array[1..max,1..max] of real;
procedure matrix(a:mas;k,m,n:integer;var b:mtr);
var i,j,p:integer;
begin
writeln('Матрица В:');
for i:=1 to m do
begin
for j:=1 to n do
begin
b[i,j]:=a[j];
if n<k then for p:=k+1 to n do b[i,p]:=0;
write(b[i,j]:5:2)
end;
writeln
end
end;
var a:mas;
b:mtr;
i,k,m,n:integer;
begin
randomize;
repeat
write('Размер массива от 1 до ',max,' k=');
readln(k);
until k in [1..max];
repeat
write('Количество строк матрицы от 1 до ',max,' m=');
readln(m);
until m in [1..max];
repeat
write('Количество столбцов матрицы от 1 до ',max,' n=');
readln(n);
until n in [1..max];
writeln('Массив А:');
for i:=1 to k do
begin
a[i]:=10*random;
write(a[i]:5:2)
end;
writeln;
matrix(a,k,m,n,b);
end.
Объяснение кода листинга программы
Этот код написан на языке Pascal ABC и выполняет следующие действия:
- Создает переменные
a,b,i,j,pиkдля хранения массиваA, матрицыB, индексов строк и столбцов, а также счетчикаp. - Запрашивает у пользователя размеры массива
Aи сохраняет их в переменныхk,mиn. - Выводит массив
Aна экран. - Выполняет цикл
repeat, пока не будет введен корректный размер массиваA. - Запрашивает у пользователя количество строк, столбцов и сохраняет их в переменных
mиn. - Выполняет цикл
repeat, пока не будет введен корректный размер массиваA. - Выводит матрицу
Bна экран. - Выполняет цикл
repeat, пока не будет введен корректный размер массиваA. - Выполняет цикл
repeat, пока не будет введен корректный размер массиваA. - Вычисляет значение
b[i,j] = a[j]для каждой строкиiи каждого столбцаj. - Если размер
nменьше размераk, то устанавливает все значенияb[i,p]равными нулю, гдеp- этоk+1доn. - Выводит значения
b[i,j]на экран. - Конец программы.