SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: jose2090 en Lunes 3 de Noviembre de 2008, 23:25
-
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! :hitcomp: 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!! :D
-
espero que sea este salu2 es en dev c++ y espero no vallas en esime culhuacan jeje salu2
#include<iostream>
#include<cstdlib>
#include<conio.h>
#include<iomanip>
using namespace std;
int main()
{
int F=1,C=1,cont=1,a=1,b=80,c=2,d=24,e=3;
system("cls");
do{
for(F=a;F<=b;F++){
gotoxy(35,13);
textcolor(GREEN);
cout<<"< "<<setw(2)<<F<<" , "<<setw(2)<<C<<" >";
gotoxy(F,a);
delay(30);
textcolor(GREEN);
cout<<"xb2";
}
for(F=b,C=c;C<=d;C++){
gotoxy(35,13);
textcolor(WHITE);
cout<<"< "<<setw(2)<<F<<" , "<<setw(2)<<C<<" >";
gotoxy(b,C);
delay(30);
textcolor(WHITE);
cout<<"xb2";
}
for(C=d,F=b;F>c;F--){
gotoxy(35,13);
textcolor(RED);
cout<<"< "<<setw(2)<<F<<" , "<<setw(2)<<C<<" >";
gotoxy(F,d);
delay(30);
textcolor(RED);
cout<<"xb2";
}
for(C=d,F=c;C>=e;C--){
gotoxy(35,13);
textcolor(WHITE);
cout<<"< "<<setw(2)<<F<<" , "<<setw(2)<<C<<" >";
gotoxy(c,C);
delay(30);
textcolor(WHITE);
cout<<"xb2";
}
a+=2;
b-=2;
c+=2;
d-=2;
e+=2;
cont++;
}while(cont<=6);
getch();
return 0;
}