#include <stdio.h>
void mostrar(int[][10],int);
void espiral(int[][10],int,int);
void main()
{
int m[10][10],rango,a;
system("cls");
do{
printf("¨Rango de la matriz(1-10)?");
scanf("%d",&rango);
}while(rango<=0||rango>10);
printf("Valor de A:");
scanf("%d",&a);
espiral(m,rango,a);
system("cls");
printf("\nDatos de la tabla...\n");
mostrar(m,rango);
printf("\n\nPulse una tecla para acabar...");
system("pause>nul");
}
void espiral(int t[][10],int r,int n)
{
int tope,a,i,k;
if(r%2) tope=r/2+1;
else tope=r/2;
for(a=0;a<tope;a++)
{
for(i=a,k=a;k<r-a;k++,n++) t[i][k]=n;
printf("\n");
for(i=a+1,k--;i<r-a;i++,n++) t[i][k]=n;
printf("\n");
for(k--,i--;k>=a;k--,n++) t[i][k]=n;
printf("\n");
for(k++,i--;i>a;i--,n++) t[i][k]=n;
}
return;
}
void mostrar(int t[][10],int r)
{
int i,k;
for(i=0;i<r;i++)
{
for(k=0;k<r;k++)
printf("%5d",t[i][k]);
printf("\n");
}
return;
}