Hola a todos!!.
Bueno mi problema es el siguiente. Tengo que hacer el recorrido del caracol para el laboratorio de mi clase. Ya lo hice y lo tengo en la mano, pero cuando lo paso C++ no me quiere funcionar!

no encuentro salida, por que a mi juicio el algoritmo esta bn, ya que lo probé con matrices cuadradas de diferentes magnitudes y me da.
El recorrido del caracol al cual me refiero es el que empieza hacia la izquierda en i=1,j=n (n=tamaño de matriz), o sea en la esquina superior derecha.
Mi método es el siguiente: aja...uno nota que en la diagonal principal (puntos donde i=j) a partir de ese punto el numero de pasos se decrementan en 1, excepto la primera vez. Por ejemplo con un 4X4; al principio son 3 pasos (p=3), cuando llega a i=j=n(en este caso 4), de ahora en adelante los pasos son 2, cuando llega a i=j=2, los pasos son 1 y cuando llega a i=j=3 se detiene el recorrido por que los pasos son cero (p=0).
Coloco un contador q empiece en cero, para asi evitar que al llegar a i=j=1 los pases decrementen, ya que esta es la excepción.
El primer For es para cuando va a la izquierda, el 2do para cuando baja, el tercero para cuando va a la derecha y el 4 para cuando sube.
El algoritmo es el siguiente:
int n, i, cont=0, num=2, cp, A[100][100], opcion;
cout<<"Digite la magnitud de la matriz cuadrada: ";
cin>>n;
int j=n, p=n-1;
A[1][n]=1;
while (p!=0){
for (cp=0;cp<p;++cp){
j=j-1;
A[j]=num, num=num+1;
if (i=j){
p=n-1-cont, cont=cont+1;
}
}
cp=0;
for (cp=0;cp<p;++cp){
i++;
A[j]=num, num=num+1;
}
cp=0;
for (cp=0;cp<p;++cp){
j++;
A[j]=num, num=num+1;
if (i=j){
p=n-1-cont, cont=cont+1;
}
}
for (cp=0;cp<p;++cp){
i=i-1;
A[j]=num, num=num+1;
}
}DE VERDAD MUCHÍSIMAS GRACIAS A QUIEN ME RESPONDA!!