Вот псевдокод, который может помочь:
У вас есть вектор / массив из 25 элементов.Каждый элемент представляет собой число от 1 до 5. Для соглашения давайте назовем вектор vec
и предположим, что элементы проиндексированы от 0 до 24
. Вам нужен двумерный массив (по сути, матрица), давайтеназовите его m
, чтобы m[0][0]
было строкой 0, столбцом 0 (первая строка, первый столбец).Исходным условием является то, что каждая координата в матрице имеет значение 0
. Мы будем использовать и повторно использовать две переменные на каждой итерации, чтобы определить, какая ячейка в матрице должна быть увеличена.Мы будем называть их а и б.a
будет значением шага "from", а b
будет значением шага "to"
- STEP ONE (первая итерация цикла
for
)
Поскольку это первый элемент массива, мы просто присвоим его значение (1) a
и продолжим (завершение итерации)
ШАГИ ВТОРОЙ К 25
a.Перейдите к следующему элементу в векторе и запишите его значение (3) в переменную b
, в этой точке a = 1
и b = 3
b.Найдите матричный элемент для первой строки, третьего столбца (что-то вроде matrix[1][3]
) и увеличьте его текущее значение (0) на единицу, так что теперь matrix[1][3] =1
c.Прежде чем двигаться дальше, нам нужно подготовиться к следующему шагу, поэтому присвойте текущее значение b
на a
(теперь a = 3
, чтобы на следующей итерации он действовал как "с").Оставьте пока b
в покое, поскольку его текущее значение не имеет значения до следующей итерации.
d.Перейти к следующей итерации цикла for
(перейти к следующему элементу в векторе (который равен 5) и начать заново с шага 2a
(На этом этапе b
должен взять текущий элементзначение (5), поэтому вы переходите к matrix[a][b]
и увеличиваете текущее значение этого элемента на единицу)
Промойте и повторяйте, пока не завершите цикл for и не установите
Как видите, вам вообще не нужны if
структуры ... Просто движущийся указатель, который позволяет вам читать значение элемента массива
. Есть даже более эффективные способы сделать это, но этого должно быть достаточно.