Из сумм элементов строк матрицы сформировать вектор - Free Pascal
Формулировка задачи:
Дана матрица А[1:6,1:6] и вектор B[1:6]. Из сумм элементов строк матрицы сформировать вектор C. Если минимальный элемент вектора C кратен минимальному элементу вектора B, то из положительных элементов матрицы А сформировать вектор D и упорядочить его по возрастанию. Иначе матрицу А упорядочить по возрастанию.
Решение задачи: «Из сумм элементов строк матрицы сформировать вектор»
textual
Листинг программы
uses Crt;
const n=6;
type Tmass=array[1..n] of integer;
Tmatr=array[1..n,1..n] of integer;
var a:Tmatr;
b,c:Tmass;
d:array[1..(n*n)] of integer;
i,j,t,z,m,min1,min2,sum:integer;
begin
ClrScr;
Writeln('Matrix A:');
Writeln;
Randomize;
min1:=MaxInt;
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=Random(51)-30;
Write(a[i,j]:5);
end;
Writeln;
b[i]:=Random(51)-30;
if b[i]<min1
then min1:=b[i];
end;
Writeln;
Writeln('Vactor B:');
Writeln;
for i:=1 to n do
Write(b[i]:5);
Writeln;
Writeln;
min2:=MaxInt;
Writeln('Vector C:');
Writeln;
for i:=1 to n do
begin
sum:=0;
for j:=1 to n do
sum:=sum+a[i,j];
c[i]:=sum;
if c[i]<min2
then min2:=c[i];
Write(c[i]:6);
end;
Writeln;
Writeln;
if (min2 mod min1)=0
then
begin
t:=0;
for i:=1 to n do
for j:=1 to n do
if a[i,j]>0 then
begin
Inc(t);
d[t]:=a[i,j];
end;
if t>1 then
for i:=1 to t-1 do
for j:=1 to t-i do
if d[j]>d[j+1] then
begin
sum:=d[j];
d[j]:=d[j+1];
d[j+1]:=sum;
end;
Writeln('Vector D:');
Writeln;
for i:=1 to t do
Write(d[i]:5);
end
else
begin
repeat
z:=0;
t:=n;
for i:=1 to n-1 do
for j:=1 to n-i do
if a[t,j]>a[t,j+1] then
begin
m:=a[t,j];
a[t,j]:=a[t,j+1];
a[t,j +1]:=m;
end;
Dec(t);
repeat
for i:=1 to n-1 do
for j:=1 to n-i do
if a[t,j]>a[t,j+1] then
begin
m:=a[t,j];
a[t,j]:=a[t,j+1];
a[t,j +1]:=m;
end;
if a[t,n]>a[t+1,1] then
begin
m:=a[t,n];
a[t,n]:=a[t+1,1];
a[t+1,1]:=m;
Inc(z);
end;
Dec(t);
until t<1;
until z=0;
Writeln('Matrix A:');
Writeln;
for i:=1 to n do
begin
for j:=1 to n do
Write(a[i,j]:5);
Writeln;
end;
end;
ReadKey;
end.
Объяснение кода листинга программы
- Объявлены следующие переменные:
- a: матрица размером n на n для хранения значений элементов матрицы A;
- b: вектор размером n для хранения значений элементов вектора B;
- c: вектор размером n для хранения значений элементов вектора C;
- d: массив размером n*n для хранения значений элементов вектора D;
- i, j, t, z, m, min1, min2, sum: целочисленные переменные для выполнения операций.
- Задано значение константы n равное 6.
- Выполнена инициализация матрицы a случайными значениями с помощью функции Random и присваивания min1 значения MaxInt.
- Выведена матрица A на экран.
- Выполнена инициализация вектора b случайными значениями.
- Выведен вектор B на экран.
- Выполнена инициализация вектора C суммами элементов строк матрицы A.
- Выведен вектор C на экран.
- Проверено равенство min2 и min1. Если оно не выполняется, то выполнен алгоритм сортировки элементов вектора C по возрастанию.
- Выполнен вывод вектора D на экран.
- Ввод ключа с помощью функции ReadKey.