IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Задачка о 2-мерном массиве
RIDDICK
сообщение 14.12.2004 2:14
Сообщение #1


Гость






Дана матрица 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
сообщение 15.12.2004 9:26
Сообщение #2


Гость






мне почти такая же попалась.... ну, помогите, народ !
 К началу страницы 
+ Ответить 
volvo
сообщение 15.12.2004 13:40
Сообщение #3


Гость






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.
 К началу страницы 
+ Ответить 
копытин
сообщение 11.03.2012 19:00
Сообщение #4


Гость






Прошу прощения, что вмешался... Я здесь недавно. Но мне очень близка эта тема. Готов помочь.
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.07.2025 18:12
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"