Помощь - Поиск - Пользователи - Календарь
Полная версия: Задачка о 2-мерном массиве
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
RIDDICK
Дана матрица A размерности n x n (квадратная) . Определить, становится ли симметричной (относительно главной диагонали) заданная матрица A после замены на число 0 каждого локального минимума. Элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него соседей.

Соседями элемента a(i,j) в матрице A размерности n x n назовем элементы a(k,l) с (i-1) <= k <= (i+1) , (j-1) <= l <= (j+1) , (k, l) не равно (i, j) .

надо на Pascal написать прогу... а как ? :thanks:
Гость_Vasily
мне почти такая же попалась.... ну, помогите, народ !
volvo
RIDDICK
Гость_Vasily
Ну здесь-то где может быть проблема?

Код

const
 n = 4;
 a: array[1 .. n, 1 .. n] of integer =
   ((1, 2, 3, 4),(5, 4, 2, 6),(7, 3, 2, 7),(8, 1, 4, 2));

{ функция проверяет, является ли элемент a[i, j] локальным минимумом }
function is_local_min(i, j: integer): boolean;
 var
   b: boolean;
   ii, jj: integer;
 begin
   b := true;
   for ii := pred(i) to succ(i) do
     for jj := pred(j) to succ(j) do
       if (ii in [1 .. n]) and (jj in [1 .. n]) then
         if (ii = i) and (jj = j) then continue
         else b := b and (a[ii, jj] > a[i, j]);
   is_local_min := b
 end;

var
 i, j: integer;
 result: boolean;
begin
 for i := 1 to n do
   for j := 1 to n do
     if is_local_min(i, j)
       then a[i, j] := 0;

 result := true;
 for i := 1 to pred(n) do
   for j := succ(i) to n do
     result := result and (a[i, j] = a[j, i]);

 if result then
   writeln('матрица симметрична')
 else
   writeln('матрица несимметрична')
end.
копытин
Прошу прощения, что вмешался... Я здесь недавно. Но мне очень близка эта тема. Готов помочь.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.