Skino
offline
Опыт:
4,683Активность: |
Простая математическая задачка.
Итак, У нас есть массив i[4], в каждом массиве записаны буквы по порядку, i[1]=a, i[2]=b...
Кароче выглядит он так: Код:
Допусти мне нужно обратится к букве "a", я записываю это вот так: Код:
Теперь представим что нам нужно обратится к той же букве, но теперь массив смещен (именно смещен а не перемешен) Код:
Щяс приведу пример: Код:
[i]Skino добавил: кароче вот эту дребедень нужно записать в виде алгоритма Код:
Отредактировано Skino, 30.03.2011 в 16:27. |
30.03.2011, 16:52 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ShadoW DaemoN
offline
Опыт:
37,078Активность: |
Условия написаны криво. Нумерацию массива лучше бы делать с нуля.
offset - сдвиг. ((код cpp
d[1] = i[(4 - offset + 0) % 4 + 1];
d[2] = i[(4 - offset + 1) % 4 + 1]; d[3] = i[(4 - offset + 2) % 4 + 1]; d[4] = i[(4 - offset + 3) % 4 + 1]; % - остаток от деления, если кто не знает. )) По-хорошему так (при условии нумерации с 0-ого индекса): ((код cpp
. . . int array_size = 4; размер массива int offset = 2; смещение . . . num - индекс нужного элемента, принимает значения от 0 до array_size-1 d[num] = i[(array_size - offset + num) % arr_size]; )) |
30.03.2011, 17:33 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Skino
offline
Опыт:
4,683Активность: |
Неработает, допустим у меня offset = 1, т.е. 4й элемент расположен в 1ой ячейке массива, первый элемент соответственно во 2й ячейке массива, пользуясь твоими формулами у меня вылетает фатал =\
Записываю я вот так. Код:
Хотя это у меня где то косяк* Отредактировано Skino, 31.03.2011 в 08:43. |
31.03.2011, 08:22 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ShadoW DaemoN
offline
Опыт:
37,078Активность: |
Комменты в кривой кодировке.
((код cpp
unsigned long int PlayerState[5];
. . . int d[4]; )) Почему размеры массивов не совпадают? Кроме того, в С++ (как и в большинстве языков), индексация массивов С НУЛЯ, А НЕ С ЕДИНИЦЫ. Зачем ты извращаешься так - неясно.
((код cpp
#define ARRAY_SIZE 4
unsigned long int PlayerState[ARRAY_SIZE]; int BufferCount; . . .
BufferCount++;
if (BufferCount > ARRAY_SIZE) BufferCount = 0; PlayerState[BufferCount] = RegBufferEBX; int d[ARRAY_SIZE]; d[0] = (int)PlayerState[(ARRAY_SIZE - BufferCount + 0) % ARRAY_SIZE]; d[1] = (int)PlayerState[(ARRAY_SIZE - BufferCount + 1) % ARRAY_SIZE]; d[2] = (int)PlayerState[(ARRAY_SIZE - BufferCount + 2) % ARRAY_SIZE]; d[3] = (int)PlayerState[(ARRAY_SIZE - BufferCount + 3) % ARRAY_SIZE]; )) Как-то так. |
03.04.2011, 13:35 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|