Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[Pascal] Двумерные массивы

26K
14 апреля 2007 года
user1997
2 / / 14.04.2007
Дан массив целых чисел MxM.Определить,сколько в нём пар соседних одинаковых элементов.Элементы считаются соседними,если их индексы в столбцах и/или в строках различаются не более чем на единицу.
622
14 апреля 2007 года
nilbog
507 / / 19.12.2006
вот идея
в кратце - что бы не было при счете повторений мы идем по массиву и каждый раз сравниваем (проще нарисовать)
X --
/ | \
так мы проверим все пары и не будет лишних посчитано
Код:
a:=0;
for i:=1 to m-1 do
 begin
 if x[i,1]=x[i,2] then a:=a+1;
 if x[i,1]=x[i+1,2] then a:=a+1;
 if x[i,1]=x[i+1,1] then a:=a+1;
 for j:=2 to m-1 do
  begin
  if x[i,j]=x[i,j+1] then a:=a+1;
  if x[i,j]=x[i+1,j] then a:=a+1;
  if x[i,j]=x[i+1,j+1] then a:=a+1;
  if x[i,j]=x[i+1,j-1] then a:=a+1;
  end;
 if x[i,m]=x[i+1,m] then a:=a+1;
 if x[i,m]=x[i+1,m-1] then a:=a+1;
 end;
for i:=1 to m-1 do
 if x[m,i]=x[m,i+1] then a:=a+1

получилось страшненько из-за того что я рассматривал крайние элементы вне цикла
можно написать все короче - засунув все в цикл и навесив проверку на выход за пределы массивы - но спрашивается зачем нам куча лишних сравнений в цикле
ps если не прав - извиняйте не проверял ))
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог