Обнулить элементы матрицы, для которых все соседние не меньше его самого - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Нужна ваша помощь, без нее никак. Обнулить элементы матрицы, для которых все соседние не меньше его самого. Желательно, что бы отображалась исходная матрица и отредактированная. Буду очень признателен!

Решение задачи: «Обнулить элементы матрицы, для которых все соседние не меньше его самого»

textual
Листинг программы
uses crt;
var a:array[0..11,0..11] of integer;{матрица}
    b:array[1..10,1..10] of boolean; {матрица для элементов, которые менять}
    m,n,mx,i,j,ii,jj,k:integer;
begin
clrscr;
repeat
writeln('Введите количество строк и столбцов от 2 до 10');
readln(m,n);
until(m in [2..10])and(n in [2..10]);
randomize;
for i:=1 to m do
 begin
  for j:=1 to n do
   begin
    a[i,j]:=1+random(10);
    b[i,j]:=false; {заполняем массив для замены значением false}
    write(a[i,j]:3);
    if i*j=1 then mx:=a[i,j]{находим максимум}
    else if a[i,j]>mx then mx:=a[i,j];
   end;
  writeln;
 end;
for i:=0 to n+1 do {заполняем внешний периметр значениями макс+1}
 begin
  a[0,i]:=mx+1;
  a[m+1,i]:=mx+1;
 end;
for i:=0 to m+1 do
 begin
  a[i,0]:=mx+1;
  a[i,n+1]:=mx+1;
 end;
for i:=1 to m do
for j:=1 to n do
 begin
   k:=0; {считаем соседей и само число не меньшие его}
   for ii:=i-1 to i+1 do
   for jj:=j-1 to j+1 do
   if a[ii,jj]>=a[i,j]then inc(k);
   if k=9 then b[i,j]:=true;{если все 9, то меняем флаг в масиве b}
 end;
writeln('Замена по условию');
for i:=1 to m do
 begin
  for j:=1 to n do
   begin
    if b[i,j] then a[i,j]:=0;
    write(a[i,j]:3);
   end;
  writeln;
 end;
readln
end.

Объяснение кода листинга программы

Этот код на Turbo Pascal представляет собой программу для изменения элементов матрицы в соответствии с определенным условием. Вот список действий, которые происходят в коде:

  1. Пользователю предлагается ввести количество строк и столбцов матрицы (от 2 до 10).
  2. Матрица a инициализируется случайными целыми числами от 1 до 100.
  3. Матрица b инициализируется значениями false.
  4. Находится максимальное значение в матрице a.
  5. Внешний периметр матрицы a заполняется значениями mx+1.
  6. Проверяется каждый элемент матрицы a. Если все его соседи больше или равны ему, флажок b[i,j] устанавливается в true.
  7. Если все соседи больше или равны элементу и значение b[i,j] равно true, то этот элемент заменяется на 0.
  8. Выводится матрица a с обновленными значениями.
  9. Программа ожидает ввода, чтобы пользователь мог увидеть результаты.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.636 из 5
Похожие ответы