Imprimir en forma de espiral

Sergio Ramirez
22 de Abril del 2005
Hola, quisiera que me ayudaran con una que me dejaron, el problema dice lo siguiente, dados n numeros, ordenarlos en forma ascende e imprimirlos en el centro de la pantalla en forma de espiral de acuerdo a las manecillas del reloj. el codigo que tengo hasta ahora solo ordena en forma ascendete, pero no tengo idea de como imprimir en espiral, este es el codigo:
#include <iostream.h>
#include <conio.h>

void main ()
{
int i;
int j,n,aux;
char *arreglo;
clrscr();
cout<<"Introduce el tamanyo del arreglo: ";
cin>>n;
arreglo = new char[n];
for (i=0; i<n; i++)
{ cout<<"Dame numero "<<i<<" ";
cin>>arreglo[i];
}
for (i=0; i<n-1; i++)
{
for (j=i+1; j<n; j++)
{
if (arreglo[i]>arreglo[j])
{
aux=arreglo[i];
arreglo[i]=arreglo[j];
arreglo[j]=aux;
}
}
}
clrscr();
for (i=0; i<n; i++)
{
cout<<arreglo[i];
cout<<endl;
}
getch();
}

Noel Solw
22 de Abril del 2005
// program espiral.
// rellenar una matriz NxN en espiral.
// 8/4/2005
// written in Borland CPP ver 4.5

#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
#include <stdlib.h>

#define N 11

void Show(int a[][N])
{
for(int i = 0; i < N; i++)
{
for(int j = 0; j < N; j++)
cout << setw(5) << a[i][j];
cout << endl;
}
cout << endl;
} // SHOW

void Process()
{
int a[N][N],i,j,k = 1;
for(int delta = 1; delta < N/2 + 1; delta++)
{
i = j = delta - 1;
for(;j < N-delta;j++)
a[i][j] = k++;
for(;i < N-delta;i++)
a[i][j] = k++;
for(;j >= delta;j--)
a[i][j] = k++;
for(;i >= delta;i--)
a[i][j] = k++;
}
if(N%2)
a[N/2][N/2] = k;
Show(a);
} // PROCESS

int main()
{
Process();
cout << "end of program - good bye ! ! !n";
return 0;
} // MAIN