Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Смена элементов массива / 2 сообщений из 2, страница 1 из 1
04.08.2017, 18:46
    #39500475
BaT9I
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Смена элементов массива
Здравствуйте. Есть массив 5х5 с рандомными числами. После создания массива я хожу по каждому элементу и заполняю его.
Сколько раз встречается цифра 9 вокруг этого элемента такое значение и заношу в него. Можно как то упростить код?
Sub Massiv()
N = 5
m = 5
ReDim a(1 To N, 1 To m)
For i = 1 To N
For j = 1 To m
a(i, j) = CInt(Int((5 * Rnd()) + 1))
Next
Next
For i = 1 To N
For j = 1 To m
If a(i, j) = 5 Then a(i, j) = 9
Next
Next
Dim s As Integer
s = 0
If a(1, 1) <> 9 Then If a(1, 2) = 9 Then s = s + 1
If a(1, 1) <> 9 Then If a(2, 1) = 9 Then s = s + 1
If a(1, 1) <> 9 Then If a(2, 2) = 9 Then s = s + 1
If a(1, 1) <> 9 Then a(1, 1) = s
s = 0
If a(1, 2) <> 9 Then If a(1, 1) = 9 Then s = s + 1
If a(1, 2) <> 9 Then If a(2, 1) = 9 Then s = s + 1
If a(1, 2) <> 9 Then If a(2, 2) = 9 Then s = s + 1
If a(1, 2) <> 9 Then If a(2, 3) = 9 Then s = s + 1
If a(1, 2) <> 9 Then If a(1, 3) = 9 Then s = s + 1
If a(1, 2) <> 9 Then a(1, 2) = s
s = 0
If a(1, 3) <> 9 Then If a(1, 2) = 9 Then s = s + 1
If a(1, 3) <> 9 Then If a(2, 1) = 9 Then s = s + 1
If a(1, 3) <> 9 Then If a(2, 3) = 9 Then s = s + 1
If a(1, 3) <> 9 Then If a(2, 4) = 9 Then s = s + 1
If a(1, 3) <> 9 Then If a(1, 4) = 9 Then s = s + 1
If a(1, 3) <> 9 Then a(1, 3) = s
s = 0
...
Рейтинг: 0 / 0
04.08.2017, 22:55
    #39500556
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Смена элементов массива
Если под "упрощением" имеется в виду уменьшение количества написания строк, то можно.

Например, один из вариантов:

1. Типизируйте данные массива (как Integer, например)
2. Сделайте размерность массива "шире" на единицу в каждую сторону.

В этом случае, вы поимеете возможность описать для каждой "значимой" ячейки массива
функцию подсчета "девяток" в соседних ячейках (двумя циклами по "вертикали" и "горизонтали")
со сдвигом адреса от -1 до +1, исключая случай сдвига 0 и 0.

На рисунке пример для элемента массива(1,1)

Добавленные "внешние" элементы массива по умолчанию для Integer будут иметь значение 0,
и в подсчете "девяток" не будут оказывать влияния на результат.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Смена элементов массива / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]