Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Heroic

Páginas: [1]
1
Hola, mi problema es que creé un árbol binario en java, sin embargo los valores y su número de nodos ya están asignados. En lo que pido ayuda es que el código debe pedir el numero de nodos y sus valores, por ejemplo: Quiero un árbol con 5 nodos y sus valores son 1,65,3,9,0. O puede que quiera un árbol de 9 nodos y ya escribo sus valores espero haberme explicado bien, el código incluye los recorridos pero estos están bien.
Adjunto el código del árbol binario:

Código: [Seleccionar]
public class ArbolBinarioOrdenado {

    public ArbolBinarioOrdenado()
    {
        raiz = null;
    }
    int contadorNodos;
    //Creamos la clase Nodo
    class Nodo
    {
        int info;
        ArbolBinarioOrdenado.Nodo izq;
        ArbolBinarioOrdenado.Nodo der;
    }
   
    //Declaramos la propiedad raiz del arbol
    ArbolBinarioOrdenado.Nodo raiz;
   
   
    //Inicia metodo Insertar
     public void insertar(int info)
    {
        //Declaramos objeto nuevoArbol
        ArbolBinarioOrdenado.Nodo nuevoArbol = new ArbolBinarioOrdenado.Nodo();
       
        //Asigamos información
        nuevoArbol.info = info;
        nuevoArbol.izq = null;
        nuevoArbol.der = null;
       
        //Verificamos si es raiz
        if (raiz == null)
        {
            raiz = nuevoArbol;
        }
        else
        {
            //Inicializamos dos nuevos nodos
            ArbolBinarioOrdenado.Nodo anterior = null;
            ArbolBinarioOrdenado.Nodo actual = null;
           
            //Igualamos el nodo actual a la raiz
            actual = raiz;
            //Realizamos la logica de ir recorriendo el nodo actual y sus subarboles
            while (actual != null)
            {
                anterior = actual;
                if (info < actual.info)
                {
                    actual = actual.izq;
                }
                else
                {
                    actual = actual.der;
                }
            }
            //Si el nodo actual es nulo, agregamos información a sus lados
            if (info < anterior.info)
            {
                anterior.izq = nuevoArbol;       
            }
            else
            {
                anterior.der = nuevoArbol;
            }
        }
    }//Termina método Insertar
     
     private void imprimirPreOrden(ArbolBinarioOrdenado.Nodo recorriendo)
    {
        //Funcion recursiva Preorden
        //Recorrido Raiz Izq. Der.
        if (recorriendo != null)
        {
            System.out.print(recorriendo.info + " ");
            imprimirPreOrden(recorriendo.izq);
            imprimirPreOrden(recorriendo.der);
        }
    }
       
    private void imprimirInOrden(ArbolBinarioOrdenado.Nodo recorriendo)
    {
        //Funcion recursiva InOrden
        //Recorrido  Izq. Raiz Der.
        if (recorriendo != null)
        {
            imprimirInOrden(recorriendo.izq);
            System.out.print(recorriendo.info + " ");
            imprimirInOrden(recorriendo.der);
        }
    }
    private void imprimirPosOrden(ArbolBinarioOrdenado.Nodo recorriendo)
    {
        //Funcion recursiva PosOrden
        //Recorrido  Izq. Der. Raiz
        if (recorriendo != null)
        {
            imprimirPosOrden(recorriendo.izq);
            imprimirPosOrden(recorriendo.der);
            System.out.print(recorriendo.info + " ");
        }
    }
     
    public void llamarPreorden()
    {
        System.out.println("\nImpresion preorden: ");
        imprimirPreOrden(raiz);
        System.out.println();
    }
    public void llamarInorden()
    {
        System.out.println("\nImpresion inorden: ");
        imprimirInOrden(raiz);
        System.out.println();   
    }
   
    public void llamarPosorden()
    {
         System.out.println("\nImpresion postorden: ");
        imprimirPosOrden(raiz);
        System.out.println();   
    }
       
    public static void main(String[] args)
    {
        ArbolBinarioOrdenado abo  = new ArbolBinarioOrdenado();
       
       
        abo.insertar(56);
        abo.insertar(24);
        abo.insertar(76);
        abo.insertar(12);
        abo.insertar(27);
        abo.insertar(87);
        abo.insertar(45);
        abo.insertar(85);
        abo.insertar(90);
        abo.insertar(40);
        abo.insertar(54);
        abo.llamarPreorden();
        abo.llamarInorden();
        abo.llamarPosorden();       
    }   
}


     

2
Hola necesito ayuda en el siguiente programa.

Generar un programa que genere un vector de tamaño variable, el vector se llenara con valores aleatorios de entre 1 y 100, el programa pedirá un valor que se desee encontrar, en caso de encontrarlo imprimir en que posición del vector se encuentra y en caso contrario imprimir que el elemento no se encontró en el vector.

La parte de generar el vector ya la tengo pero la búsqueda me da error, agradecería mucho su ayuda, adjunto el código.

Código: [Seleccionar]
#include "iostream"
#include <time.h>
#include <cstdlib>
#include <stdbool.h>
using namespace std;

main(){
int tam, num;
bool band = false;
cout<<"Tamano del vector: ";
cin>>tam;
int vector[tam];
srand(time(NULL));

for (int i=0;i<tam;i++){
vector [i]=rand()%(100-1);
}
for (int j=0;j<tam;j++){
cout<<"\n  Vector ["<<j<<"] = "<<vector[j];
}
cout<<"\nIngrese el numero que quieres buscar: ";
cin>>num;
while(band==false){
if(vector[i]==num){ //Al compilarlo aquí me marca el error
band = true;
}
i++;
}
if (band==false){
cout<<"\nEl numero a buscar no existe en el Vectro";
}
else if(band==true){
cout<<"\nEl numero a sido encontadro en la posicion: "<<i-1;
}
}
   

3
Eres un crack Kabuto, muchas gracias por tu enorme ayuda, voy a estudiar todo el código desde el principio para comprenderlo aun mejor, la verdad si esta muy bien explicado en serio muchas gracias por tu ayuda, te mando un gran abrazo ;), saludos para ti.

4
Muchas gracias Kabuto por tu ayuda en verdad te lo agradezco, ya solo si me pudieras ayudar con la parte del combate, intente hacerlo por mi cuenta pero igual no me salió y eso que estuve un buen rato :"(, gracias a tu ayuda he comprendido mas como funciona el programa y como actúan los métodos, la súper clase y sus clases hijas, muchas gracias de verdad, ya solo falta la parte del combate en serio si me ayudas me harías muy feliz.

5
Hola solicito ayuda para crear el main del siguiente programa:

Un programa en java que contenga dos personales:

Caballero
Mago

Ambos personajes tienen:
Nivel de ataque
Nivel de defensa
Nivel de vida
Nombre

El caballero tiene una función especial invocar relámpago (Aquí el caballero debe tener la opción de usar la habilidad, aunque que sea golpe critico me gusto y no se como dejarlo)

El mago tiene una función especial de curar sus heridas y lanzar hechizos (Aquí el mago debe tener la opción de curarse así mismo 50 puntos vida y el hechizo es igual que el relampago del caballero).

Cuando se crea una instancia de la clase de caballero y mago, tienes que pasar sus parámetros de ataque, defensa y nivel de vida para crearlo.

El juego comienza con un enemigo que tiene el doble de niveles y es un tipo de caballero (El enemigo tiene las mismas habilidades que la clase caballero).

El juego pregunta si quieren defenderse o atacar, si atacan invocan el poder con un número aleatorio y con este ataque bajan puntos de vida a su oponente.

A continuación, al azar su oponente pide atacar o defender, si ataca, el ataque hará un número aleatorio y se repetirá hasta que uno de los personajes alcance su nivel de vida a cero.

El mago en cada turno puede elevar su nivel de vida en 1.

Gracias a Kabuto por ayudarme al definir la súper clase y las clases hijas, he llegado a comprenderlas, además he especificado unas partes que eran ambiguas,aquí adjunto todo

Súper clase personaje

Código: [Seleccionar]
import java.util.Random;

public class Personaje {
protected String nombre;
protected int ataque;
protected int defensa;
protected int vida;

public Personaje() {
nombre = "Desconocido";
ataque = 0;
defensa = 0;
vida = 0;
}
public Personaje(String nombre, int ataque, int defensa, int vida){
this.nombre = nombre;
this.ataque = ataque;
this.defensa = defensa;
this.vida = vida;
}

public void setNombre (String nom){
this.nombre = nom;
}
public void setAtaque (String atac){
this.nombre = atac;
}
public void setDefensa (String defn){
this.nombre = defn;
}
public void setVida (String pv){
this.nombre = pv;
}

public String getNombre (){
return this.nombre;
}
public int getAtaque (){
return this.ataque;
}
public int getDefensa (){
return this.defensa;
}
public int getVida (){
return this.vida;
}

public int atacar() {
Random azar = new Random();
//Ataque mínimo: 1, Maximo: según nivel de ataque
int puntosAtaque = azar.nextInt(ataque) + 1;

return puntosAtaque;
}

public int defender() {
Random azar = new Random();
//Defensa mínima: 1, Maxima: según nivel de defensa
int puntosDefensa = azar.nextInt(defensa) + 1;

return puntosDefensa;
}

}

Clase Caballero

Código: [Seleccionar]
import java.util.Random;

public class Caballero extends Personaje{

public Caballero() {
super();
}

public Caballero(String nombre, int ataque, int defensa, int vida) {
super(nombre, ataque, defensa, vida);
}

@Override
public int atacar() {
/*
* Caballero puede conseguir duplicar el daño de ataque
* con su habilidad "Ataque Relampago".
*/
int puntosAtaque = super.atacar();

//Damos un 10% de posibilidad de obtener un "Ataque Relampago"
Random azar = new Random();
int valor = azar.nextInt(100);

if (valor%10 == 0) { //Comprobamos si es multiplo de 10
System.out.println("¡" + nombre + " consigue un Ataque Relampago!");
//Un "Ataque Relampago" duplica el daño del ataque
return puntosAtaque * 2;
}
else
return puntosAtaque;
}

}

Clase Mago

Código: [Seleccionar]
import java.util.Random;

public class Mago extends Personaje{

public Mago() {
super();
}

public Mago(String nombre, int ataque, int defensa, int vida) {
super(nombre, ataque, defensa, vida);
}

private void recuperarVida() {
/*
* 20% posibilidad de recuperar 1 punto de vida
* en cada turno de juego
*/
Random azar = new Random();
int valor = azar.nextInt(100);
if (valor%5 == 0) {//Comprobamos si es múltiplo de 5
System.out.println("¡" + nombre + " recupera 1 punto de vida!");
vida++;
}
}

@Override
public int atacar() {
//Posibilidad de recuperar vida en turno de aque
recuperarVida();
return super.atacar();
}

@Override
public int defender() {
//Posibilidad de recuperar vida en turno de defensa
recuperarVida();
return super.defender();
}

}

La verdad he intentado hacer el main por mi cuenta pero no pude :"( te he fallado Kabuto, si alguien es amable de ayudarme por favor, se lo agradeceria de por vida   

6
Hola soy nuevo en esto de la programación y solicito ayuda para el siguiente programa:

Un programa en java que contenga dos personajes: caballero y mago.

Ambos personajes tienen:

  • Nivel de ataque
  • Nivel de defensa
  • Nivel de vida
  • Nombre

El caballero tiene una función especial invocar relámpago

El mago tiene una función especial de curar sus heridas y lanzar hechizos.

Cuando se crea una instancia de la clase de caballero o mago, tienes que pasar sus parámetros de ataque, defensa y nivel de vida para crearlo.

El juego comienza con un enemigo que tiene el doble de niveles y es un tipo de caballero.

El juego pregunta si quieren defenderse o atacar, si atacan invocan el poder con un número aleatorio y con este ataque bajan puntos de vida a su oponente.

A continuación, al azar su oponente pide atacar o defender, si ataca, el ataque hará un número aleatorio y se repetirá hasta que uno de los personajes alcance su nivel de vida a cero.

El mago en cada turno puede elevar su nivel de vida en 1.

Solo tengo la súper clase de ahí en adelante no se que tengo que hacer, agradecería mucho su ayuda, adjunto el código de la súper clase

Código: [Seleccionar]
class Nivel {
    protected String nombre;
    protected int ataque;
    protected int defensa;
    protected int vida;
    public Nivel (){
           nombre = "Desconocido";
           ataque = 0;
           defensa = 0;
           vida = 0;
    }
    public Nivel (String nombre, int ataque, int defensa, int vida){
       this.nombre = nombre;
        this.ataque = ataque;
        this.defensa = defensa;
        this.vida = vida;
    }
   
    public void setnombre (String nom){
        this.nombre = nom;
    }
    public void setataque (String atac){
        this.nombre = atac;
    }
    public void setdefensa (String defn){
        this.nombre = defn;
    }
    public void setvida (String pv){
        this.nombre = pv;
    }
   
    public String getnombre (){
        return this.nombre;
    }
    public int getataque (){
        return this.ataque;
    }
    public int getdefensa (){
        return this.defensa;
    }
    public int getvida (){
        return this.vida;
    }
   
}

Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".