Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2014, 00:09   #1
Sergey_gorobets
Пользователь
 
Регистрация: 08.02.2013
Сообщений: 69
По умолчанию Масивы в C#

Существует массив...


1 0 1 1
0 5 1 0
1 0 1 0
0 0 1 0

Задача определить сколько цифр "1" "вокруг" цифры "5"..
Каким образом опросить массив со всеми возможными вариантами расположения цифры "5"? Если "5" в этом положении, то "вокруг" нее 8 цифр из которых "1"- 5 штук. А если, например "5" будет в крайних положениях, то "вокруг" нее может быть 3 или 5 цифр..Описывать отдельно все эти варианты, заранее кажется не самым оптимальным вариантом..Не могу сообразить как поступить в этом случае..Есть ли другие варианты?Или все-таки описывать крайние положения?
Заранее спасибо!!
Sergey_gorobets вне форума Ответить с цитированием
Старый 10.02.2014, 00:15   #2
Sergey_gorobets
Пользователь
 
Регистрация: 08.02.2013
Сообщений: 69
По умолчанию

В принципе вроде-бы пришло в голову опрашивать элементы массива с номерами (i+1...+3..+4..+5) а также (i-1...-3...-4..-5) от ....Должно получиться. И описать исключения, если выхожу из границ массива??Или все-таки, не туда?
Sergey_gorobets вне форума Ответить с цитированием
Старый 10.02.2014, 03:18   #3
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Общий принцип такой. Сперва надо найти расположение цифры 5. Её координаты (i,j). Затем опросить окрестности её расположения, то есть элементы начиная с (i-1,j-1) и заканчивая (i+1,j+1). При этом, естественно, что элемент (i,j) следует пропустить, потому что это цифра 5.
Если цифра 5 находится на краю массива, то в процессе опроса может произойти выход за границы массива. Поэтому для корректной работы в случае крайних положений необходима некоторая модификация алгоритма опроса.
Streletz вне форума Ответить с цитированием
Старый 10.02.2014, 11:25   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а если так записать?
Допустим, массив A имеет размерность N и позиция проверямой ячейки задана координатами i, j
тогда
Код:
int k = 0; 
for(r=Math.Max(0, i-1);r<=Math.Min(i+1, N); r++) {
  for(c=Math.Max(0, j-1);c<=Math.Min(j+1, N); c++) {
    if( !(r==i) && !(c==j)  && (A[r,c] == 1) ) k++;
  }
}

пишу прямо на форуме, без проверки..
Просто чтобы проиллюстрировать свою идею..


p.s. т.к. в ячейке у нас находится цифра 5, то можно проверку на r==i и c==j выкинуть:
Код:
 if( A[r,c] == 1 ) k++;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Масивы Nepomeha Общие вопросы C/C++ 10 27.12.2013 04:50
Масивы vasya9 Помощь студентам 0 07.11.2011 01:22
масивы dimondru Общие вопросы C/C++ 1 30.05.2011 23:10
масивы с++ Smile.id Помощь студентам 1 25.11.2009 15:09
С++ масивы Миха Шебалкин Помощь студентам 0 03.06.2009 22:33