Действия с матрицей - Turbo Pascal
Формулировка задачи:
Выполнить над прямоугольной матрицей В размером m х n последовательность действий, указанную в задании.
а) Сформировать из столбцов В, не содержащих равных элементов, матрицу С размером m х k, где k n - количество таких столбцов; б) в матрице С вычислить суммы элементов строк, номера которых определяются номерами нулевых элементов заданного вектора.
Решение задачи: «Действия с матрицей»
textual
Листинг программы
uses crt;
const nmax=10;
var b,c:array[1..nmax,1..nmax] of integer;
v:array[1..nmax] of byte;
m,n,k,i,j,f,p:byte;
sm:integer;
begin
clrscr;
randomize;
repeat
write('Количество строк до ',nmax,' m=');
readln(m);
until m in [1..nmax];
repeat
write('Количество столбцов до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Исходная матрица B:');
for i:=1 to m do
begin
for j:=1 to n do
begin
b[i,j]:=random(20);
write(b[i,j]:3);
end;
writeln;
end;
k:=0;
for j:=1 to n do
begin
f:=0;
i:=1;
while(i<m)and(f=0) do
begin
p:=i+1;
while(p<=m)and(f=0) do
if b[p,j]=b[i,j] then f:=1
else inc(p);
if f=0 then inc(i);
end;
if f=0 then
begin
inc(k);
for i:=1 to m do
c[i,k]:=b[i,j];
end;
end;
if k=0 then
begin
writeln('Во всех столбцах матрицы В есть одинаковые элементы');
readln;
exit;
end;
writeln('Матрица С');
for i:=1 to m do
begin
for j:=1 to k do
write(c[i,j]:3);
writeln;
end;
writeln('Вектор V');
for i:=1 to m do
begin
v[i]:=random(2);
write(v[i]:3);
end;
writeln;
p:=0;
for i:=1 to m do
if v[i]=0 then
begin
p:=1;
sm:=0;
for j:=1 to n do
sm:=sm+c[i,j];
writeln('Сумма в строке ',i,'=',sm);
end;
if p=0 then write('В векторе нет нулевых элементов');
readln
end.
Объяснение кода листинга программы
- Используется библиотека crt для работы с графическим интерфейсом.
- Задаются константы nmax и m, которые представляют максимально возможное количество строк и столбцов матрицы соответственно.
- Объявляются переменные b, c, v, m, n, k, i, j, f и p. Переменная b представляет исходную матрицу, c - копию матрицы b, v - вектор, m, n, k, i, j, f и p - вспомогательные переменные для поиска повторяющихся элементов в матрице b.
- Выводится запрос на ввод количества строк и столбцов матрицы.
- Для каждой строки матрицы b выводится количество повторяющихся элементов в столбце.
- Если количество повторяющихся элементов равно нулю, выводится сообщение о том, что во всех столбцах матрицы b есть одинаковые элементы.
- Выводится матрица c, которая представляет копию матрицы b с повторяющимися элементами.
- Выводится вектор v.
- Выводится сообщение о том, что в векторе нет нулевых элементов.
- Выводится сумма элементов в строке для каждого повторяющегося элемента в матрице b.
- Если сумма элементов в строке равна нулю, выводится сообщение о том, что в строке нет повторяющихся элементов.