Ввести двумерный массив . Каждый элемент, стоящий в массиве на позиции с четной суммой индексов заменить остатком от деления этого элемента на 7. Массив вывести до и после преобразования. Решить задачу с использованием процедур пользователя.


Ввести двумерный массив . Каждый элемент, стоящий в массиве на позиции с четной суммой индексов зам

масяня194 масяня194    2   22.06.2020 12:44    11

Ответы
maksCRAFTer maksCRAFTer  15.10.2020 14:38

--- PascalABC.NET 3.6.2 ---

procedure MatrTransform<T>(var Matr: Array[,] of T; TransformRule: T -> T; IndicesPredicate: (integer,integer) -> boolean := nil);

begin

 if IndicesPredicate = nil then begin

   for var i:= 0 to Matr.GetLength(0)-1 do

   begin

     for var k := 0 to Matr.GetLength(1)-1 do

     begin    

       Matr[i,k] := TransformRule(Matr[i,k]);

     end;    

   end;

 end

 else

   for var i:= 0 to Matr.GetLength(0)-1 do

   begin

     for var k := 0 to Matr.GetLength(1)-1 do

     begin  

       if (IndicesPredicate(i,k)) then

       Matr[i,k] := TransformRule(Matr[i,k]);

     end;    

   end;

end;

begin

 var (n,m) := ReadInteger2('Enter dimensions of matrix: ');

 var A := ReadMatrInteger(n,m);

 A.Println;

 MatrTransform(A, x -> x mod 7, (row, col) -> (row+col) mod 2 = 0);

 println('');

 A.Println;

end.

З.Ы Решение представлено для текстовой версии задачи, в которой говориться о трансформации двумерного массива

З.Ы 2 Generic-Процедура MatrTransform<> Может изменять элементы матрицы как обращая внимание на позицию элемента в матрице, так и нет. По этому в ней больше кода, чем вам, возможно, нужно.

З.Ы 3 MatrTransform<> Может работать с двумерными массивами любого типа данных

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика