Матрицы. Тексты программ: различия между версиями
Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Mikst (обсуждение | вклад) |
Mikst (обсуждение | вклад) Нет описания правки |
||
(не показаны 2 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
__NOTOC__ | |||
===Общая часть=== | ===Общая часть=== | ||
Во всех задачах будем считать, что матрица описана следующим образом: | Во всех задачах будем считать, что матрица описана следующим образом: | ||
Строка 248: | Строка 249: | ||
for var i:=2 to m do | for var i:=2 to m do | ||
for var j:=m-i+ | for var j:=m-i+2 to m do | ||
a[i,j] := 0; | a[i,j] := 0; | ||
Строка 255: | Строка 256: | ||
end.</source> | end.</source> | ||
===Заполнение нулями | ===Заполнение нулями выше побочной диагонали=== | ||
<source lang="Delphi">var | |||
a: Matrix; | |||
sum: integer; | |||
begin | |||
var m := 5; | |||
var n := m; | |||
FillMatrixByRandom(a,m,n); | |||
writeln('Исходная матрица: '); | |||
PrintMatrix(a,m,n); | |||
for var i:=1 to m-1 do | |||
for var j:=i+1 to m do | |||
a[i,j] := 0; | |||
writeln('Преобразованная матрица: '); | |||
PrintMatrix(a,m,n); | |||
end.</source> | |||
== Ссылки == | == Ссылки == | ||
[[Программы для начинающих]] | *[[Программы для начинающих]] | ||
*[http://pascalabc.net/ru/programmyi-i-algoritmyi-dlya-nachinayuschih.html Сайт PascalABC.NET: Программы и алгоритмы для начинающих] |
Текущая версия от 15:51, 19 января 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(10);
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.
Наличие нуля в матрице
var
a: Matrix;
HasZero: boolean;
label 1;
begin
var m := 3;
var n := 4;
FillMatrixByRandom(a,m,n);
writeln('Исходная матрица: ');
PrintMatrix(a,m,n);
HasZero := False;
for var i:=1 to m do
for var j:=1 to n do
if a[i,j]=0 then
begin
HasZero := True;
goto 1;
end;
1:
if HasZero then
writeln('В матрице есть нули')
else writeln('В матрице нулей нет')
end.
Сумма чисел на главной диагонали
var
a: Matrix;
sum: integer;
begin
var m := 5;
var n := m;
FillMatrixByRandom(a,m,n);
writeln('Исходная матрица: ');
PrintMatrix(a,m,n);
sum := 0;
for var i:=1 to m do
sum += a[i,i];
writeln('Сумма элементов главной диагонали: ',sum);
end.
Сумма чисел на побочной диагонали
var
a: Matrix;
sum: integer;
begin
var m := 5;
var n := m;
FillMatrixByRandom(a,m,n);
writeln('Исходная матрица: ');
PrintMatrix(a,m,n);
sum := 0;
for var i:=1 to m do
sum += a[i,m-i+1];
writeln('Сумма элементов побочной диагонали: ',sum);
end.
Заполнение нулями ниже главной диагонали
var
a: Matrix;
sum: integer;
begin
var m := 5;
var n := m;
FillMatrixByRandom(a,m,n);
writeln('Исходная матрица: ');
PrintMatrix(a,m,n);
for var i:=2 to m do
for var j:=m-i+2 to m do
a[i,j] := 0;
writeln('Преобразованная матрица: ');
PrintMatrix(a,m,n);
end.
Заполнение нулями выше побочной диагонали
var
a: Matrix;
sum: integer;
begin
var m := 5;
var n := m;
FillMatrixByRandom(a,m,n);
writeln('Исходная матрица: ');
PrintMatrix(a,m,n);
for var i:=1 to m-1 do
for var j:=i+1 to m do
a[i,j] := 0;
writeln('Преобразованная матрица: ');
PrintMatrix(a,m,n);
end.