• Sábado 14 de Diciembre de 2024, 13:38

Autor Tema:  RECORRIDO DEL CARACOL EN C++  (Leído 8986 veces)

jose2090

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
RECORRIDO DEL CARACOL EN C++
« en: Lunes 3 de Noviembre de 2008, 23:25 »
0
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

yetryx

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
    • HTTP://WWW.INFORMATICA-SECCION1.FOROACTIVO.ES
Re: RECORRIDO DEL CARACOL EN C++
« Respuesta #1 en: Miércoles 5 de Noviembre de 2008, 03:39 »
0
espero que sea este salu2 es en dev c++ y espero no vallas en esime culhuacan jeje salu2


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