Из сумм элементов строк матрицы сформировать вектор - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д