Logo

Foro sobre los Ciclos Formativos de Grado Medio ( SMR ) y Superior ( ASIR, DAI, DAM y DAW ).

Ejercicios PLE de C, ADA y Java

Foro sobre el módulo > Programación en lenguajes estructurados.

Re: Ejercicios PLE de C, ADA y Java

Notapor Guille el 09 May 2011, 18:17

Pongo aqui el ejercicio 6 de la hoja 5. El ejercicio de las torres de hanoi con representación grafica (no como se ven algunos ejemplos de Hanoi en C que hay por internet que solo listan los movimientos que hay que realizar) y usando la recursividad, pero que solo puede soportar hasta 6 discos, por el tamaño de la consola (aunque no dudo que pueda más discos):

Se puede compiliar para linux o para windows cambiando la variable SO
Código: Seleccionar todo
#include<stdio.h>
#include<stdlib.h>
#define MAX 6
#define SO 1//1 Linux, 0 Windows

void inicializarHanoi(int *O,int *A,int *D,int discos);
int imprimeTorres(int *O,int *A,int *D,int discos);
int resolverHanoi(int elementos, int *O,int *A,int *D,int discos,int *es_Origen,int *es_Auxiliar,int *es_Destino); //Esos ultimos 3 parametros indican cual es realmente cada torre, importante para la funcion recursiva
int mover(int *T1,int *T2,int discos);
int disco_superior(int *T,int discos);

main()
{
   int discos,O[MAX],A[MAX],D[MAX];
   printf("Torres Hanoi\n");
   printf("Introduce num. de discos: (MAX 6)\n");
   scanf("%d",&discos);
   printf("\n");
   inicializarHanoi(O,A,D,discos);
   
   imprimeTorres(O,A,D,discos);
   resolverHanoi(discos,O,A,D,discos,O,A,D);
}

void inicializarHanoi(int *O,int *A,int *D,int discos)
{
   int cont,cont2,asterisco=0;
   int aux=discos;
   for(cont=0;cont<=discos-1;cont++)
   {
      O[cont]=aux*2-1;
      aux--;
   }
   for(cont=0;cont<=discos-1;cont++)
   {
      D[cont]=0;
      A[cont]=0;
   }
}

int disco_superior(int *T,int discos)
{
int disco_superior_T=0;
int cont,disco_T=0;
for(cont=0;cont<discos;cont++)
{
  if(T[cont]!=0)
  {
    disco_superior_T=T[cont];
    disco_T=cont;
  }
}
return(disco_T);
}

int mover(int *T1,int *T2,int discos)
{
int disco_superior_T1=0;
int disco_superior_T2=0;
int disco_T1=discos,disco_T2=discos;
int cont=0;

disco_T1=disco_superior(T1,discos);
disco_T2=disco_superior(T2,discos);
disco_superior_T1=T1[disco_T1];
disco_superior_T2=T2[disco_T2];

if(disco_superior_T2==0)
{
   T2[0]=disco_superior_T1;
}
else
{
   T2[disco_T2+1]=disco_superior_T1;
}
T1[disco_T1]=0;   
}
imprimeTorres(int *O,int *A,int *D,int discos)
{
   int cont,cont2=0,cont3,cont4=0;

   printf("----Torre O----\n");
   cont4=0;
   for(cont=discos-1;cont>=0;cont--)
   {
    for(cont3=O[cont];cont3<=discos+cont4;cont3++)
    {
      printf(" ");
    }
    for(cont2=1;cont2<=O[cont];cont2++)
    {
     printf("*",cont2);
    }
    cont4++;
    printf("\n");
   }

   printf("----Torre A----\n");
   cont4=0;
   for(cont=discos-1;cont>=0;cont--)
   {
    for(cont3=A[cont];cont3<=discos+cont4;cont3++)
    {
      printf(" ");
    }
    for(cont2=1;cont2<=A[cont];cont2++)
    {
     printf("*",cont2);
    }
    cont4++;
    printf("\n");
   }

   printf("----Torre D----\n");
   cont4=0;
   for(cont=discos-1;cont>=0;cont--)
   {
    for(cont3=D[cont];cont3<=discos+cont4;cont3++)
    {
      printf(" ");
    }
    for(cont2=1;cont2<=D[cont];cont2++)
    {
     printf("*",cont2);
    }
    cont4++;
    printf("\n");
   }
   
   if(SO==1)
   {
      system("sleep 1");
      system("clear");
   }
   else
   {
      system("pause");
      system("cls");
   }
}

int resolverHanoi(int elementos, int *O,int *A,int *D,int discos,int *es_Origen,int *es_Auxiliar,int *es_Destino)
{
   if(elementos==1){
      mover(O,D,discos);
      imprimeTorres(es_Origen,es_Auxiliar,es_Destino,discos);
   }
   else   
   {
      resolverHanoi(elementos-1,O,D,A,discos,es_Origen,es_Auxiliar,es_Destino);
      resolverHanoi(1,O,A,D,discos,es_Origen,es_Auxiliar,es_Destino);
      resolverHanoi(elementos-1,A,O,D,discos,es_Origen,es_Auxiliar,es_Destino);
   }
}
Avatar de Usuario
Guille
Visitante
Visitante
 
Mensajes: 14
Registrado: 10 Mar 2011, 11:56
Ciclo Formativo: DAI / DAM
Curso:
Acceso por: Prueba de Acceso
Provincia: Huesca
Instituto: Sierra de Guara

Re: Ejercicios PLE de C, ADA y Java

Notapor Lobo14 el 09 May 2011, 20:37

Se agradece que pongas la solución, la verdad es que lleva su trabajillo el problema...
Avatar de Usuario
Lobo14
Moderador FP
Moderador FP
 
Mensajes: 1434
Registrado: 04 Sep 2008, 15:12
Ciclo Formativo: DAI / DAM
Curso:
Acceso por: Prueba de Acceso
Provincia: Huelva
Instituto: I.E.S. La Marisma

Re: Ejercicios PLE de C, ADA y Java

Notapor RODLON el 20 May 2011, 12:00

Edicion del primer post para añadir enlace a ejercicios resueltos!!
La descarga vale la pena aunque solo sea para ver al 3 en raya jugar solo contr asi mismo xD
Debe registrarse para ver este enlace. Gracias por su visita.
Nada más lejos. Se que este foro lo visitan otros muchos del IES Sierra de guara: Hola!
Avatar de Usuario
RODLON
Iniciado
Iniciado
 
Mensajes: 174
Registrado: 01 Oct 2010, 23:31
Ciclo Formativo: DAI / DAM
Curso:
Acceso por: Prueba de Acceso
Provincia: Huesca
Instituto: IES Sierra de guara

Re: Ejercicios PLE de C, ADA y Java

Notapor Guille el 26 May 2011, 22:57

No creo que el profesor le hubiera gustado que un alumno suba un buen pack de ejercicios resueltos a sus problemas propuestos a un enlace de internet. que a los demás compañeros de clase lo pudiesen bajarlo y entregar con tus ejercicios, que asi no aprenderian...

Por eso esperaba hasta el final del curso, para publicar algunos ejercicios...

¿sabe el profesor que lo has subido?
Avatar de Usuario
Guille
Visitante
Visitante
 
Mensajes: 14
Registrado: 10 Mar 2011, 11:56
Ciclo Formativo: DAI / DAM
Curso:
Acceso por: Prueba de Acceso
Provincia: Huesca
Instituto: Sierra de Guara

Re: Ejercicios PLE de C, ADA y Java

Notapor RODLON el 27 May 2011, 06:50

Pues no lo sabe, al menos yo no se lo he dicho a el ni a nadie. Y solo son 4 ejercicios. Ademas se notaria bastante si se han copiado, aparte de que llevan mi nombre en comentarios, si quien lo copia no lo entiende, poco podria cambiar para que no sean iguales y que siguiera funcionando, por no decir que pasaria a la hora de demostrar su funcionamiento frente al profesor.
Aunque tambien hay formas mas faciles de copiar, por ejemlpo muchos guardan sus ejercicios resueltos en los ordenadores de clase y cualquiera puede acceder a ellos, incluso por la red. Y tambien se pueden buscar soluciones por internet....por ejemplo tu has subido el codigo de las torres de hanoi, hay gente que de mi clase que aun no lo tiene hecho y podria copiarlo sin nisiquiera estar registrados en el foro.
Si le molestaria al profesor que los haya subido, no lo se, es cuestion de preguntarle, cosa que haria yo mismo.

¿Por?
Debe registrarse para ver este enlace. Gracias por su visita.
Nada más lejos. Se que este foro lo visitan otros muchos del IES Sierra de guara: Hola!
Avatar de Usuario
RODLON
Iniciado
Iniciado
 
Mensajes: 174
Registrado: 01 Oct 2010, 23:31
Ciclo Formativo: DAI / DAM
Curso:
Acceso por: Prueba de Acceso
Provincia: Huesca
Instituto: IES Sierra de guara

Re: Ejercicios PLE de C, ADA y Java

Notapor Guille el 27 May 2011, 08:54

Mejor no lo preguntes. es mejor que no sepa eso.

Una pregunta ¿a ti te exige que funcionen todos los ejercicios?, claro que pide que se hagan todos los ejercicios.

Pero ¿ES OBLIGATORIO QUE FUNCIONEN CORRECTAMENTE TODOS LOS EJERCICIOS PARA APROBAR LAS PRACTICAS?. Es que asi lo dice en la ultima carta que me envio el profesor. Y si no apruebo las practicas, no podré aprobar el curso independientemente de la nota que saque en el exámen.
Avatar de Usuario
Guille
Visitante
Visitante
 
Mensajes: 14
Registrado: 10 Mar 2011, 11:56
Ciclo Formativo: DAI / DAM
Curso:
Acceso por: Prueba de Acceso
Provincia: Huesca
Instituto: Sierra de Guara

Re: Ejercicios PLE de C, ADA y Java

Notapor RODLON el 27 May 2011, 09:30

Pues si, que funcionen, es obligatorio, no vas a entregar algo que no funciona. Si te falta alguno de la hoja 1, 2 o 3 tampoco pasa nada. Si luego hay alguno que no entregas o no acaba de funcionar pues mal, pero aun podria pasar. Yo hay 4 ejercicios de las ultimas hojas que no entregare, aver que pasa...
Esto es lo que nos conto en clase.
Debe registrarse para ver este enlace. Gracias por su visita.
Nada más lejos. Se que este foro lo visitan otros muchos del IES Sierra de guara: Hola!
Avatar de Usuario
RODLON
Iniciado
Iniciado
 
Mensajes: 174
Registrado: 01 Oct 2010, 23:31
Ciclo Formativo: DAI / DAM
Curso:
Acceso por: Prueba de Acceso
Provincia: Huesca
Instituto: IES Sierra de guara

Previo

Volver a PLE

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados