elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
26 Mayo 2012, 11:41  


Tema destacado: Entra al canal IRC oficial de #elhacker.net

+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Seguridad
| | |-+  Desafíos - Wargames (Moderador: Kasswed)
| | | |-+  Torres de Hanoy
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Torres de Hanoy  (Leído 2,219 veces)
cokeing


Desconectado Desconectado

Mensajes: 1.036


SôNïC r0oLz


Ver Perfil
Torres de Hanoy
« en: 21 Diciembre 2003, 07:54 »

Acabo de hacer un programilla en C para poder practicar con las torres de hanoy.

http://canalmandrake.shta.net/torres.exe

:) Enviarme el numero de movimientos que habeis echo para conseguir pasar la torre al otro lado.

Hall of fame:
-
-
-


En línea

Rojodos
Colaborador
***
Desconectado Desconectado

Mensajes: 3.535



Ver Perfil WWW
Re:Torres de Hanoy
« Respuesta #1 en: 21 Diciembre 2003, 13:30 »

A mi me peta...

Esta mal codeada, creo.

Me pasas el source en C?

Salu2


En línea

FeRmO


Desconectado Desconectado

Mensajes: 379

Gritemos!


Ver Perfil
Re:Torres de Hanoy
« Respuesta #2 en: 21 Diciembre 2003, 13:51 »

A mi tampoco me funciona
En línea

FeRmO
Ferchu

Desconectado Desconectado

Mensajes: 78



Ver Perfil
Re:Torres de Hanoy
« Respuesta #3 en: 21 Diciembre 2003, 15:58 »

No rula :'(
En línea
cokeing


Desconectado Desconectado

Mensajes: 1.036


SôNïC r0oLz


Ver Perfil
Re:Torres de Hanoy
« Respuesta #4 en: 24 Diciembre 2003, 04:50 »

os pasteo el Cfuente. lo compilais y yata :)

Código:
/*
             *
            ***
           *****
          *******
         *********
 [___________]   [___________]   [___________]

 torre0={0,0,0,0,0}
 torre1={5,4,3,2,1}
 torre2={0,0,0,0,0}

*/
void printar();
void mover();

 int torre[3][5]={
    0,0,0,0,0,
    5,4,3,2,1,
    0,0,0,0,0,
 };
 int val=1;

#include <stdio.h>
int main(){
 int x=1;

 do{
 if(val==0) getch();
 printar();
  mover();
 }while(x);
 return 0;
}

 void printar(){
 int i,x,espais;
 int n,a;

 clrscr();

 // Printando las torres
 for(i=0;i<5;i++){
  for(x=0;x<3;x++){

    n=(torre[x][(4-i)]*2);
     if(n>1)n--;
    espais=(13-n)/2;

      for(a=espais;a>0;a--) printf(" ");
      if(n==0)printf(" ");
      else for(a=n; a>0;a--) printf("*");
      for(a=espais;a>0;a--) printf(" ");

   // printf("      %d      ",torre[x][(4-i)]);
    printf("   ");
  }
  printf("\n");
 }
 printf("[___________]   [___________]   [___________]");

}
 void mover(){
 int i,x;
 int mv,pt;

 val=0;

 // Moviendo los bloques

 printf("\n\nIndique la la torre que quiere mover: ");
  scanf("%d",&mv);
  if(mv>3 || mv<1){
     printf("\n>>>ERROR!\n");
     printf("!! El numero tiene que estar comprendido entre 1 y 3\n");
     printf("\nIndique la torre que quiere mover: ");
     scanf("%d",&mv);
  }
  mv--;

  printf("Muy bien. Ahora indique el destino del bloque: ");
  scanf("%d",&pt);
  if(pt>3 || pt<1){
     printf("\n>>>ERROR!\n");
     printf("!! El numero tiene que estar comprendido entre 1 y 3\n");
     printf("\nIndique el destino del bloque: ");
     scanf("%d",&pt);
  }
  pt--;

  for(i=4;i>=0;i--){
   if(torre[mv][i]){
     for(x=4;x>=0;x--){
      if(torre[pt][x]){
   if(torre[pt][x]>torre[mv][i]) val=1;
   break;
   x=1;
      }
      if(x==0)val=1;
     }
     break;
   }
  }

  if(val==1){
  for(i=4;i>=0;i--){
   if(torre[mv][i]){
     for(x=4;x>=0;x--){
      if(torre[pt][x]){
   torre[pt][x+1]=torre[mv][i];
   torre[mv][i]=0;
   break;
   x=1;
      }
      if(x==0){
   torre[pt][x]=torre[mv][i];
   torre[mv][i]=0;
   break;
      }
     }
     break;
   }
  }
  }else{
   printf("\n>>>ERROR!\n");
   printf("!! No puede poner un bloque mas grande que su inferior\n");
   printf("!! No puede mover un bloque que no existe\n");
   printf("!! No puede mover un bloque en la misma torre\n");
   }
 }

ale :) saludos. cokeing
En línea

cokeing


Desconectado Desconectado

Mensajes: 1.036


SôNïC r0oLz


Ver Perfil
Re:Torres de Hanoy
« Respuesta #5 en: 31 Diciembre 2003, 02:29 »

qué! no os gusta compilar eeeeh! mamoncios!
ademas que os lo doy! cafgones y xDDD
En línea

SiesteR

Desconectado Desconectado

Mensajes: 84

Haz lo que te gusta. Se feliz. :)


Ver Perfil
Re:Torres de Hanoy
« Respuesta #6 en: 31 Diciembre 2003, 02:39 »

te agrecedecemos que lo postees pero...

Bracula@debian:~$ gcc hanoi.c -o hanoi
/tmp/cciyn2af.o(.text+0x21): In function `main':
: undefined reference to `getch'
/tmp/cciyn2af.o(.text+0x43): In function `printar':
: undefined reference to `clrscr'
collect2: ld returned 1 exit status
Bracula@debian:~$
En línea
SiesteR

Desconectado Desconectado

Mensajes: 84

Haz lo que te gusta. Se feliz. :)


Ver Perfil
Re:Torres de Hanoy
« Respuesta #7 en: 31 Diciembre 2003, 02:42 »

ah bueno el segundo error el de la undefined reference to clrscr es porque toy en linux y aqui seria system("clear"), no?

----------MOdifico el mensaje pa no escribir tantos xD -------------

ya he comprobado que efectivamente es system("clear"); asi que eso ya esta OK

ahora me falta lo del getch(),. ¿no crees que deberias haberle asigando a una variable de tipo ch el resultado de la funcion getch() ? p.ej.: ch=getch(); ademas de incluir la libreria <conio.h>
« Última modificación: 31 Diciembre 2003, 03:04 por SiesteR » En línea
cokeing


Desconectado Desconectado

Mensajes: 1.036


SôNïC r0oLz


Ver Perfil
Re:Torres de Hanoy
« Respuesta #8 en: 31 Diciembre 2003, 03:59 »

no si... hay que tener cojones xD
siempre programo para linux y todos me pedis que lo haga para windows y una vez k lo hago para windows, ..... aaaaaaaaargh xD, venga voy a hacerlo para linux :) un momentin
En línea

SiesteR

Desconectado Desconectado

Mensajes: 84

Haz lo que te gusta. Se feliz. :)


Ver Perfil
Re:Torres de Hanoy
« Respuesta #9 en: 31 Diciembre 2003, 04:15 »

xDDD

la culpa es de lo buindouseros

de verdad...

:D
En línea
cokeing


Desconectado Desconectado

Mensajes: 1.036


SôNïC r0oLz


Ver Perfil
Re:Torres de Hanoy
« Respuesta #10 en: 31 Diciembre 2003, 04:44 »

Código:

/*
            *
            ***
          *****
          *******
        *********
[___________]  [___________]  [___________]

torre0={0,0,0,0,0}
torre1={5,4,3,2,1}
torre2={0,0,0,0,0}

*/
void printar();
void mover();

int torre[3][5]={
    0,0,0,0,0,
    5,4,3,2,1,
    0,0,0,0,0,
};
int val=1;

#include <stdio.h>
int main(){
int x=1;

do{
if(val==0) getchar();
printar();
  mover();
}while(x);
return 0;
}

void printar(){
int i,x,espais;
int n,a;

system("clear");

// Printando las torres
for(i=0;i<5;i++){
  for(x=0;x<3;x++){

    n=(torre[x][(4-i)]*2);
    if(n>1)n--;
    espais=(13-n)/2;

      for(a=espais;a>0;a--) printf(" ");
      if(n==0)printf(" ");
      else for(a=n; a>0;a--) printf("*");
      for(a=espais;a>0;a--) printf(" ");

  // printf("      %d      ",torre[x][(4-i)]);
    printf("  ");
  }
  printf("\n");
}
printf("[___________]  [___________]  [___________]");

}
void mover(){
int i,x;
int mv,pt;

val=0;

// Moviendo los bloques

printf("\n\nIndique la la torre que quiere mover: ");
  scanf("%d",&mv);
  if(mv>3 || mv<1){
    printf("\n>>>ERROR!\n");
    printf("!! El numero tiene que estar comprendido entre 1 y 3\n");
    printf("\nIndique la torre que quiere mover: ");
    scanf("%d",&mv);
  }
  mv--;

  printf("Muy bien. Ahora indique el destino del bloque: ");
  scanf("%d",&pt);
  if(pt>3 || pt<1){
    printf("\n>>>ERROR!\n");
    printf("!! El numero tiene que estar comprendido entre 1 y 3\n");
    printf("\nIndique el destino del bloque: ");
    scanf("%d",&pt);
  }
  pt--;

  for(i=4;i>=0;i--){
  if(torre[mv][i]){
    for(x=4;x>=0;x--){
      if(torre[pt][x]){
   if(torre[pt][x]>torre[mv][i]) val=1;
   break;
   x=1;
      }
      if(x==0)val=1;
    }
    break;
  }
  }

  if(val==1){
  for(i=4;i>=0;i--){
  if(torre[mv][i]){
    for(x=4;x>=0;x--){
      if(torre[pt][x]){
   torre[pt][x+1]=torre[mv][i];
   torre[mv][i]=0;
   break;
   x=1;
      }
      if(x==0){
   torre[pt][x]=torre[mv][i];
   torre[mv][i]=0;
   break;
      }
    }
    break;
  }
  }
  }else{
  printf("\n>>>ERROR!\n");
  printf("!! No puede poner un bloque mas grande que su inferior\n");
  printf("!! No puede mover un bloque que no existe\n");
  printf("!! No puede mover un bloque en la misma torre\n");
  getchar();
  }
}
ale :) yasta... pongo el
Código:
getchar();
para que limpie el buffer del teclado.
saludos.cokeing
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con torres de hanoi en vb
Programación Visual Basic
Freelancer 1 1,279 Último mensaje 23 Agosto 2011, 00:03
por ignorantev1.1
torres de hanoi
Programación General
resckate 3 1,507 Último mensaje 10 Septiembre 2011, 22:01
por Valkyr
Aumentan los ataques con punteros láser a aviones y torres de control
Noticias
wolfbcn 0 314 Último mensaje 18 Octubre 2011, 15:21
por wolfbcn
Torres de Hanoi
Programación C/C++
m@o_614 4 570 Último mensaje 21 Diciembre 2011, 06:02
por naderST
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines