Всем доброго времени суток! Уважаемые форумчане, пожалуйста, помогите решить проблемку, с которой столкнулась.
Есть программа с множеством различных функций. Так вот одна из них - вывод отсортированного массива по спирали вверх против часовой стрелки, криво работает. Функция работает с простыми числами (от 1 до сайз*сайз), но повторяет значения элементов, если пытаешься присвоить массив.
Код:
void SPIRAL(int nums[size][size])
{
int iIndex, jIndex, n = 0;
int *p=&nums[0][0];
iIndex = jIndex = size / 2;
while (n < size)
{
for (int a = 0; a < n; a++)
{
nums[iIndex++][jIndex] = *p++; //вверх
}
for (int a = 0; a < n; a++)
{
nums[iIndex][jIndex++] = *p++; //влево
}
n++;
for (int a = 0; a < n; a++)
{
nums[iIndex--][jIndex] = *p++; //вниз
}
for (int a = 0; a < n; a++)
{
nums[iIndex][jIndex--] = *p++; //вправо
}
n++;
}
for (int i = 0; i < size; i++)
{
for (int j = 0; j < size; j++)
{
cout << setw(4) << nums[i][j];
}
cout << endl;
}
}