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

  • Автор темы phoebe
  • Дата начала
P

phoebe

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

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

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

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

C++:
	 # 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>