Algoritmia - torres de hanoi

 
Vista:

torres de hanoi

Publicado por carolina (1 intervención) el 24/07/2007 02:18:26
hola necesito saber como resolver la torres de hanoi en builder 6.0 pero con cuatro torres y 10 discos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Resolución de Torres de Hanói con cuatro torres y 10 discos en Borland C++ Builder 6.0

Publicado por Alejandro (307 intervenciones) el 11/03/2024 20:12:02
Carolina, resolver las Torres de Hanói con cuatro torres y 10 discos en Borland C++ Builder 6.0 implica una implementación recursiva para mover los discos de una torre a otra, siguiendo las reglas del problema. Aquí hay un ejemplo simple de cómo podrías abordar esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <vcl.h>
#include <iostream>
#include <sstream>
#include <string>
 
#pragma hdrstop
 
#include "Unit1.h"
 
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
 
using namespace std;
 
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
 
// Función recursiva para resolver las Torres de Hanói
void Hanoi(int n, int origen, int destino, int auxiliar1, int auxiliar2)
{
    if (n == 1)
    {
        // Mover el disco de la torre de origen a la torre de destino
        ostringstream oss;
        oss << "Mover disco 1 de la torre " << origen << " a la torre " << destino << "\r\n";
        Form1->Memo1->Lines->Add(oss.str().c_str());
        return;
    }
 
    // Mover n-2 discos de la torre de origen a la torre auxiliar1
    Hanoi(n - 2, origen, auxiliar1, auxiliar2, destino);
 
    // Mover el disco n-1 de la torre de origen a la torre auxiliar2
    ostringstream oss;
    oss << "Mover disco " << n - 1 << " de la torre " << origen << " a la torre " << auxiliar2 << "\r\n";
    Form1->Memo1->Lines->Add(oss.str().c_str());
 
    // Mover n-2 discos de la torre auxiliar1 a la torre destino
    Hanoi(n - 2, auxiliar1, destino, auxiliar2, origen);
 
    // Mover el disco n de la torre de origen a la torre auxiliar2
    oss.str("");
    oss << "Mover disco " << n << " de la torre " << origen << " a la torre " << auxiliar2 << "\r\n";
    Form1->Memo1->Lines->Add(oss.str().c_str());
 
    // Mover n-2 discos de la torre destino a la torre auxiliar1
    Hanoi(n - 2, destino, auxiliar1, auxiliar2, origen);
 
    // Mover el disco n-1 de la torre auxiliar2 a la torre destino
    oss.str("");
    oss << "Mover disco " << n - 1 << " de la torre " << auxiliar2 << " a la torre " << destino << "\r\n";
    Form1->Memo1->Lines->Add(oss.str().c_str());
 
    // Mover n-2 discos de la torre auxiliar1 a la torre destino
    Hanoi(n - 2, auxiliar1, destino, auxiliar2, origen);
}
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    Memo1->Clear();
    int numDiscos = 10;
    Hanoi(numDiscos, 1, 4, 2, 3);
}

Este código asume que tienes un formulario con un `TMemo` llamado `Memo1` y un botón llamado `Button1`. Al hacer clic en el botón, se iniciará la resolución de las Torres de Hanói con cuatro torres y 10 discos, y el progreso se mostrará en el `TMemo`.

Ten en cuenta que este código se centra en la lógica de resolución de las Torres de Hanói y no en la interfaz gráfica. Puedes adaptar este código según tus necesidades específicas en Borland C++ Builder 6.0.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar