Заполнение массива по спирали - C (СИ)

Узнай цену своей работы

Формулировка задачи:

заполнение массива по спирали начиная с левого нижнего угла за часовой стрелкой 5 06 07 08 09 4 19 20 21 10 3 18 25 22 11 2 17 24 23 12 1 16 15 14 13

Решение задачи: «Заполнение массива по спирали»

textual
Листинг программы
    int i,n,x,y,**a;
    int l,d,yx;
    int dx[]={ 0,1,0,-1};
    int dy[]={-1,0,1, 0};
 
    printf("n=");
    scanf("%d",&n);
    a=(int**)malloc(n*sizeof(int*));
    for(i=0; i<n; i++) a[i]=(int*)malloc(n*sizeof(int));
    d=x=0;
    l=y=n-1;
    for(yx=0; yx<n*n;)
    {
        for(i=0; i<l; i++)
        {
            a[y][x]=++yx;
            x+=dx[d];
            y+=dy[d];
        }
        d=++d%4;
        if(!d)
        {
            x++;
            y--;
            l-=l==2?1:2;
        }
    }
    for(y=0; y<n; y++,printf("\n"))
        for(x=0; x<n; x++) printf("%3d",a[y][x]);
    system("pause");
    for(i=0; i<n; i++) free(a[i]);
    free(a);

Объяснение кода листинга программы

В этом коде заполняется массив по спирали, используя цикл и вспомогательные переменные. Вот список, описывающий код:

  1. Объявляются переменные:
    • i, n, x, y, **a - для хранения значений и работы с массивом.
    • l, d, yx - для контроля цикла и управления перемещением по массиву.
    • dx[] и dy[] - для хранения направлений движения по массиву.
  2. Пользователю предлагается ввести размер массива (n).
  3. Массив a динамически выделяется с помощью malloc.
  4. В цикле заполняются все элементы массива.
  5. Цикл контролируется с помощью переменной yx, которая увеличивается на единицу при каждой итерации.
  6. Код перемещается по массиву, используя вспомогательные переменные x, y, l и d.
  7. После заполнения массива выводится на экран.
  8. Массив освобождается с помощью free, чтобы избежать утечки памяти.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.417 из 5
Похожие ответы