1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление

заполнение матрица по спирали

Тема в разделе "С и С++", создана пользователем phoebe, 25 ноя 2009.

  1. phoebe

    phoebe Гость

    Репутация:
    0
    всем привет!
    вот тут такая задача (язык Си): заполнить матрицу последовательностью чисел кратных 3 в таком порядке:

    10 9 8 7
    11 16 15 6
    12 13 14 5
    1 2 3 4

    (надо в динам. памяти) форм. массив)

    у меня получилось написать ,собственно, очень мало - только заполнение числами, кратными 3 одномерного массива и двухмерного, но только в правильном порядке. а по спирали не выходит(( я уже так давно мучаюсь с ней, буду очень благодарна, если мне кто-то поможет с этим циклом (тот, что расставляет и выводит по спирали)... :(
    или подскажите, кто уже с этим сталкивался, хотя бы алгоритм...
    вот мой код:

    Код:
    	 # include<conio.h>
    # include <stdio.h>
    # include <math.h>
    #include <malloc.h>
    # include <stdlib.h>
    # define m 16
    # define n 4
    
    void main()
    {
    clrscr();
    int i, j, t, p, k, ar[m], *ptr, br[n][n], *pt, *ptt, cr[n][n];
    ptt=&ar[0];
    pt=&br[0][0];
    ptr=&cr[0][0];
    
    //Odnomerniy massiv
    
    
    for( i=0; i<m; i++)
    { *(ptt+i)=i*3+3;
    printf("a[%d]=%d\n",i, *(ptt+i));}
    printf("\n\n");
    
    
    // Dvuhmerniy massiv
    
    for(j=0; j<n; j++)
    {
    for(t=0; t<n; t++)
    {
    *(pt+j*n+t)=(j*n+t)*3+3;
    printf(" b[%d][%d]=%d", j, t, br[j][t]);
    }
    printf("\n");
    }
    printf("\n\n");	
    
    
    
    
    //Dvuhmerniy massiv po spirali
    
    p=n/2;
    
    
    
    for(p=0; p<(n/2-1); p++)
    {
    
    for(j=p; j<n-p-1; j++)
    {
    *(ptr+(n-p-1)*n+j)=((n-p-1)*n+j)*3+3;
    printf(" c[%d][%d]=%d ", n-p-1, j, cr[n-p-1][j]);
    
    
    
    }
    printf("\n");
    
    for (i=n-p-1; i>p+1; --i)
    {
    *(ptr+i*n+(n-p-1))=(i*n+(n-p-1))*3+3;
    printf(" c[%d][%d]=%d", i, n-p-1, cr[i][n-p-1]);
    }
    printf("\n");
    
    for(j=n-p-1; j>p+1; j--)
    {
    *(ptr+p*n+j)=(p*n+j)*3+3;
    printf(" c[%d][%d]=%d", p, j, cr[p][j]);
    }
    printf("\n");
    
    for (i=p; i<n-p-1; i++)
    {
    *(ptr+i*n+p)=(i*n+p)*3+3;
    printf(" c[%d][%d]=%d", i, p, cr[i][p]);
    }
    printf("\n");
    
    
    }
    if (n%2==1)
    {
    *(ptr+(n/2+1)*n+n/2+1)=((n/2+1)*n+n/2+1)*3+3;
    printf(" %d ", *(ptr+(n/2+1)*n+n/2+1);
    } 
    
    }
    getch();
    <table valign="top" style='margin:0;width:100%;border:1px dashed red;'>[tr]<td align='middle' bgcolor='#ff6060' valign='top' width='1%'>
    <FONT color='#ffffff' size='+3'> ! </font>
    </td><td align="midle" valign='top' style='background:#fff;'>Испоьзуем теги кода!</td>[/tr]</table>
     
Загрузка...

Поделиться этой страницей