В заданной целочисленной матрице A(N, M) выведите на печать индексы первого положительного элемента, кратного заданному числу K. Если таких элементов в матрице нет, то выведите соответствующий текст. Элементы матриц просматривайте слева направо и сверху вниз — Pascal(Паскаль)

const
  nmax = 20;
 
type
  mas = array[1..nmax, 1..nmax] of integer;
 
var
  a: mas;
  n, m: byte;
  k: integer;
 
procedure init_mas(var a: mas);
var
  i, j: integer;
begin
  repeat 
    write('Количество строк от 1 до ', nmax, ' m=');
    readln(m);
  until m in [1..nmax];
  repeat
    write('Количество столбцов от 1 до ', nmax, ' n=');
    readln(n);
  until n in [1..nmax];
  for i := 1 to m do 
  begin
    for j := 1 to n do
      a[i, j] := random(20) - 10; 
  end;
end;
 
procedure print_mas(a: mas);
var
  i, j: integer;
begin
  
  for i := 1 to m do
  begin
    for j := 1 to n do
      write(a[i, j]:4); 
    writeln;
  end;
end;
 
procedure first(a: mas);
var
  i, j, indi, indj: integer;
begin
  indi := -1;
  indj := -1;
  writeln('Введите k');
  readln(k);
  for i := m downto 1 do
    for j := n downto 1 do
      if (a[i, j] > 0) and (a[i, j] mod k = 0) then begin indi := i; indj := j;  end;
  if (indi > 0) and (indj > 0) then writeln('[', indi, ',', indj, ']') else writeln('Таких элементов нет');
end;
 
begin
  init_mas(a);
  writeln('Исходный массив:');
  print_mas(a);   
  first(a);
end.

Следующий вариант

const
  nmax = 20;
 
var
  a: array[1..nmax, 1..nmax] of integer;
  n, m: byte;
  k: integer;
  i, j, indi, indj: integer;
 
begin
  repeat 
    write('Количество строк от 1 до ', nmax, ' m=');
    readln(m);
  until m in [1..nmax];
  repeat
    write('Количество столбцов от 1 до ', nmax, ' n=');
    readln(n);
  until n in [1..nmax];
  for i := 1 to m do 
  begin
    for j := 1 to n do
      a[i, j] := random(20) - 10; 
  end;
  
  writeln('Исходный массив:');
  
  for i := 1 to m do
  begin
    for j := 1 to n do
      write(a[i, j]:4); 
    writeln;
  end;
  
  indi := -1;
  indj := -1;
  writeln('Введите k');
  readln(k);
  for i := m downto 1 do
    for j := n downto 1 do
      if (a[i, j] > 0) and (a[i, j] mod k = 0) then begin indi := i; indj := j;  end;
  if (indi > 0) and (indj > 0) then writeln('[', indi, ',', indj, ']') else writeln('Таких элементов нет');
  
end.

Следующий вариант

const
  nmax = 20;
 
var
  a: array[1..nmax, 1..nmax] of integer;
  n, m: byte;
  k: integer;
  i, j, indi, indj: integer;
 
begin
  repeat 
    write('Количество строк от 1 до ', nmax, ' m=');
    readln(m);
  until ((m<nmax) and (m>1));
  repeat
    write('Количество столбцов от 1 до ', nmax, ' n=');
    readln(n);
  until ((n<nmax) and (n>1));
  for i := 1 to m do 
  begin
    for j := 1 to n do
      a[i, j] := random(20) - 10; 
  end;
  
  writeln('Исходный массив:');
  
  for i := 1 to m do
  begin
    for j := 1 to n do
      write(a[i, j]:4); 
    writeln;
  end;
  
  indi := -1;
  indj := -1;
  writeln('Введите k');
  readln(k);
  for i := m downto 1 do
    for j := n downto 1 do
      if (a[i, j] > 0) and (a[i, j] mod k = 0) then begin indi := i; indj := j;  end;
  if (indi > 0) and (indj > 0) then writeln('[', indi, ',', indj, ']') else writeln('Таких элементов нет');
  
end.

Leave a Comment

− 8 = 1