В матрице найти номера строк, содержащие в нечетных позициях нули, и определить количество различных элементов - Pascal
Формулировка задачи:
Дана целочисленная прямоугольная матрица.
1) найти номера строк, в которых на всех нечетных позициях стоят нули;
2) определить количество различных элементов матрицы
Решение задачи: «В матрице найти номера строк, содержащие в нечетных позициях нули, и определить количество различных элементов»
textual
Листинг программы
const n=3;m=4;
type matr=array[1..n,1..m] of integer;
var a:matr;
procedure in_matr(var x:matr);
var i,j:integer;
begin
for i:=1 to n do
for j:=1 to m do
x[i,j]:=random(6)
end;
procedure out_matr(x:matr;s:string);
var i,j:integer;
begin
writeln(s);
for i:=1 to n do
begin
for j:=1 to m do write(x[i,j]:4);
writeln
end;
end;
procedure n_0(x:matr);
var i,j:integer;
f,ff:boolean;
begin
ff:=false;
write('Строки с нулями на всех нечетных позициях ');
for i:=1 to n do
begin
f:=false;
j:=1;
while (not f) and (j<=m) do
begin
if x[i,j]<>0 then f:=true;
inc(j,2)
end;
if not f then begin write(i,' ');ff:=true end;
end;
if not ff then write('отсутствуют');
writeln
end;
function k_r(x:matr):integer;
type mas=array[1..n*m] of integer;
var i,j,k,ke:integer;
b:mas;
f:boolean;
begin
ke:=0;
for i:=1 to n do
begin
for j:=1 to m do
begin
k:=1;f:=false;
while (not f) and (k<=ke) do
begin
if b[k]=x[i,j] then f:=true;
inc(k)
end;
if not f then begin inc(ke);b[ke]:=x[i,j] end
end
end;
k_r:=ke
end;
begin
in_matr(a);
out_matr(a,'Исходная матрица ');
n_0(a);
writeln('Различных элементов: ',k_r(a))
end.
Объяснение кода листинга программы
- Объявляется константа n с значением 3 и m со значением 4.
- Объявляется тип matr как массив размерности n на m, содержащий целые числа.
- Объявляется переменная a как matr (матрица).
- Описывается процедура in_matr, принимающая матрицу и заполняющая её случайными числами от 0 до 5.
- Описывается процедура out_matr, принимающая матрицу и строку s, и выводящая содержимое матрицы в консоль.
- Описывается процедура n_0, принимающая матрицу и ищущая строки, в которых находятся нули на нечетных позициях, и выводящая эти строки в консоль.
- Описывается функция k_r, принимающая матрицу и возвращающая количество различных элементов в матрице.
- В основной части программы вызывается процедура in_matr для заполнения матрицы, процедура out_matr для вывода исходной матрицы в консоль, процедура n_0 для поиска строк с нулями на нечетных позициях, и выводится количество различных элементов в матрице.