/* Cargar una matriz, numérica entera, de orden N, a partir de un valor cualquiera, introducido por teclado, y recorriéndola en espiral.
Ej: N=4 ,Vi=6   Matriz resultante:     6     7    8    9
                                                           17  18   19  10
                                                           16  21   20  11
                                                           15  14   13  12        */

#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;
}

d VOLVER