Матрицы. Тексты программ: различия между версиями
Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Mikst (обсуждение | вклад) |
Mikst (обсуждение | вклад) |
||
Строка 130: | Строка 130: | ||
for var i:=1 to m do | for var i:=1 to m do | ||
begin | begin | ||
var sum := | var sum := 0; | ||
for var j:= | for var j:=1 to n do | ||
sum += a[i,j]; | sum += a[i,j]; | ||
sums[i] := sum; | sums[i] := sum; |
Версия от 09:22, 18 января 2010
Общая часть
Во всех задачах будем считать, что матрица описана следующим образом:
const
SzM = 10;
SzN = 10;
type Matrix = array [1..SzM,1..SzN] of integer;
Кроме того, во всех задачах будем использовать следующие процедуры для заполнения и вывода:
procedure FillMatrixByRandom(var a: Matrix; m,n: integer); // Заполнение случайными
begin
for var i:=1 to M do
for var j:=1 to N do
a[i,j] := Random(100);
end;
procedure PrintMatrix(const a: Matrix; m,n: integer); // Вывод матрицы
begin
for var i:=1 to M do
begin
for var j:=1 to N do
write(a[i,j]:4);
writeln;
end;
end;
Данные участки кода следует писать в начале каждой программы, приводимой в этом пункте.
Заполнение матрицы случайными числами и вывод
var a: Matrix;
begin
var m := 4;
var n := 5;
FillMatrixByRandom(a,m,n);
writeln('Элементы матрицы: ');
PrintMatrix(a,m,n);
end.
Перемена местами двух строк
var a: Matrix;
begin
var m := 5;
var n := 9;
FillMatrixByRandom(a,m,n);
writeln('Исходная матрица: ');
PrintMatrix(a,m,n);
var k1 := 2; // поменять местами строки с номерами k1 и k2
var k2 := 4;
for var j:=1 to n do
Swap(a[k1,j],a[k2,j]);
writeln('Преобразованная матрица: ');
PrintMatrix(a,m,n);
end.
Поиск минимумов в строках
var
a: Matrix;
mins: array [1..SzN] of integer;
begin
var m := 5;
var n := 9;
FillMatrixByRandom(a,m,n);
writeln('Исходная матрица: ');
PrintMatrix(a,m,n);
for var i:=1 to m do
begin
var min := a[i,1];
for var j:=2 to n do
if a[i,j]<min then
min := a[i,j];
mins[i] := min;
end;
writeln('Минимумы в строках: ');
for var i:=1 to m do
write(mins[i]:4);
end.
Поиск максимумов в столбцах
var
a: Matrix;
maxs: array [1..SzN] of integer;
begin
var m := 5;
var n := 9;
FillMatrixByRandom(a,m,n);
writeln('Исходная матрица: ');
PrintMatrix(a,m,n);
for var j:=1 to n do
begin
var max := a[1,j];
for var i:=2 to m do
if a[i,j]>max then
max := a[i,j];
maxs[j] := max;
end;
writeln('Максимумы в столбцах: ');
for var j:=1 to n do
write(maxs[j]:4);
end.
Поиск сумм в строках
var
a: Matrix;
sums: array [1..SzM] of integer;
begin
var m := 4;
var n := 5;
FillMatrixByRandom(a,m,n);
writeln('Исходная матрица: ');
PrintMatrix(a,m,n);
for var i:=1 to m do
begin
var sum := 0;
for var j:=1 to n do
sum += a[i,j];
sums[i] := sum;
end;
writeln('Суммы в строках: ');
for var i:=1 to m do
write(sums[i]:4);
end.
Поиск произведений в столбцах
var
a: Matrix;
products: array [1..SzN] of integer;
begin
var m := 3;
var n := 4;
FillMatrixByRandom(a,m,n);
writeln('Исходная матрица: ');
PrintMatrix(a,m,n);
for var j:=1 to n do
begin
var p := 1;
for var i:=1 to m do
p *= a[i,j];
products[j] := p;
end;
writeln('Произведения в столбцах: ');
for var j:=1 to n do
writeln(products[j]:4);
end.