• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Программка на с++. Вывод готового массива по спирали из центра

Нимфея

Ученик
Регистрация
26 Апр 2011
Сообщения
1
Реакции
0
Баллы
0
Программка на с++. Вывод готового массива по спирали из центра

Всем доброго времени суток! Уважаемые форумчане, пожалуйста, помогите решить проблемку, с которой столкнулась.
Есть программа с множеством различных функций. Так вот одна из них - вывод отсортированного массива по спирали вверх против часовой стрелки, криво работает. Функция работает с простыми числами (от 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;
   }
}
 
Назад
Сверху