|
program M_x_N;
type
Tmatrix = array[1..1] of integer; {тип для динамических массивов}
var
Matrix: ^Tmatrix; {матрица m x n}
Sums: ^Tmatrix; {массив для сумм элементов в столбцах}
Nums: ^Tmatrix; {массив для количества кратных элементов}
i,j,k1,k2,m,n: integer;
Begin
Write('Введите n:');
Readln(n);
Write('Введите m:');
Readln(m);
Write('Введите k1:');
Readln(k1);
Write('Введите k2:');
Readln(k2);
GetMem(Matrix,n * m * sizeOf(integer)); {выделение памяти под все массивы}
GetMem(Sums,n * sizeOf(integer)); {-//-}
GetMem(Nums,n * sizeOf(integer)); {-//-}
for j:=1 to n do begin
Nums^[j]:= 0; {обнуление массивов}
Sums^[j]:= 0; {-//-}
end;
Writeln;
Writeln('Матрица:');
Randomize; {для произвольной генерации чисел}
for i:=1 to m do begin {цикл по всей матрице}
for j:=1 to n do begin
Matrix^[(j-1)*n+i]:=Random(71)-40; {инициализация элементов
(Random(71) - это числа 0..70)}
Write( (Matrix^[(j-1)*n+i]):4 ); {вывод на экран}
if (Matrix^[(j-1)*n+i] mod k1 = 0) or (Matrix^[(j-1)*n+i] mod k2 = 0) then
begin {если элемент кратен}
Sums^[j]:= Sums^[j] + Matrix^[(j-1)*n+i]; {прибавляем в массив сумм}
Nums^[j]:= Nums^[j] + 1; {и увеличиваем кол-во на 1}
end;
end;
Writeln;
end;
Writeln('Число элементов кратных ', k1,' и ',k2,':'); {вывод}
for j:=1 to n do
Write( (Nums^[j]):4 );
Writeln;
Writeln('Сумма по столбцам:');
for j:=1 to n do
Write( (Sums^[j]):4 );
FreeMem(Sums,n * sizeOf(integer)); {освобождение памяти}
FreeMem(Nums,n * sizeOf(integer));
FreeMem(Matrix,n * m * sizeOf(integer));
Readln;
End.
|
|