C/Visual C - AYUDAAA

 
Vista:

AYUDAAA

Publicado por David (1 intervención) el 12/11/2001 23:04:57
Necesito que me ayudeis con un arbol binario. Es para hacer el tipico juego de que averigue un animal pero no me sale. Si alguien puede ayudarme que me conteste y le envio el programa. Esta hecho en turbo c++ 3.0
GRACIAS ES MUY URGENTE, LLEVO BLOQUEADO 6 MESESSS :-(
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

Ayuda con un árbol binario para adivinar un animal

Publicado por Alejandro (913 intervenciones) el 22/10/2024 20:18:25
¡Hola David! Entiendo que estás trabajando en un juego de adivinanza de animales utilizando un árbol binario y que has estado bloqueado. Estoy aquí para ayudarte. A continuación, te proporcionaré un esquema básico de cómo podrías implementar un árbol binario para este tipo de juego en Turbo C++.

Estructura básica del árbol binario



Primero, definamos la estructura del nodo del árbol:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <cstring>
 
using namespace std;
 
struct Node {
    string question; // Pregunta o animal
    Node* yes;      // Subárbol para respuesta "sí"
    Node* no;       // Subárbol para respuesta "no"
};
 
// Función para crear un nuevo nodo
Node* createNode(string question) {
    Node* newNode = new Node;
    newNode->question = question;
    newNode->yes = nullptr;
    newNode->no = nullptr;
    return newNode;
}

Funciones para manejar el árbol



A continuación, implementaremos algunas funciones para interactuar con el árbol:

1. Agregar un nuevo animal: Si el usuario responde "no" a una pregunta, se le pedirá que ingrese una nueva pregunta y el nuevo animal.

2. Adivinar un animal: Recorrer el árbol y hacer preguntas hasta que se adivine el animal.

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
void playGame(Node* root) {
    char response;
 
    if (root->yes == nullptr && root->no == nullptr) {
        cout << "¿Es un " << root->question << "? (s/n): ";
        cin >> response;
 
        if (response == 's') {
            cout << "¡Adiviné tu animal!" << endl;
        } else {
            cout << "¡No lo sé! ¿Qué animal es? ";
            string newAnimal;
            cin >> newAnimal;
 
            cout << "¿Qué pregunta podría hacer para distinguir un " << newAnimal << " de un " << root->question << "? ";
            string newQuestion;
            cin.ignore(); // Limpiar el buffer
            getline(cin, newQuestion);
 
            // Crear nuevos nodos
            Node* newAnimalNode = createNode(newAnimal);
            Node* oldAnimalNode = createNode(root->question);
 
            // Actualizar el árbol
            root->question = newQuestion;
            root->yes = newAnimalNode;
            root->no = oldAnimalNode;
        }
    } else {
        cout << root->question << " (s/n): ";
        cin >> response;
 
        if (response == 's') {
            playGame(root->yes);
        } else {
            playGame(root->no);
        }
    }
}

Función principal



Finalmente, implementamos la función principal para iniciar el juego:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main() {
    // Crear un árbol binario simple
    Node* root = createNode("¿Es un perro?");
    root->yes = createNode("perro");
    root->no = createNode("gato");
 
    cout << "¡Bienvenido al juego de adivinanza de animales!" << endl;
    char playAgain;
 
    do {
        playGame(root);
        cout << "¿Quieres jugar de nuevo? (s/n): ";
        cin >> playAgain;
    } while (playAgain == 's');
 
    return 0;
}

Explicación del código



1. Estructura del nodo: Cada nodo contiene una pregunta o un animal y punteros a los nodos "sí" y "no".

2. Función `playGame`: Esta función recorre el árbol, haciendo preguntas y permitiendo al usuario agregar nuevos animales y preguntas.

3. Función principal: Se inicializa el árbol con algunas preguntas y se inicia el juego.

Consideraciones



- Persistencia: Este código no guarda el árbol en un archivo. Si deseas que el árbol persista entre sesiones, necesitarás implementar funciones para guardar y cargar el árbol desde un archivo.
- Mejoras: Puedes mejorar el juego añadiendo más preguntas y animales, o implementando un sistema de puntuación.

¡Buena suerte!
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