Menú

Mostrar Mensajes

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

Mostrar Mensajes Menú

Mensajes - do-while

#451
¡Buenas!

Si por iguales te refieres a que tienen la misma estructura y los mismos datos en los mismos nodos solo te falta comprobar, como ya te han dicho, si las comparaciones en las distintas ramas te devuelven 0 o 1, y si alguna devuelve 1 ya no tienes que seguir comparando, solo tienes que devolver este valor.

En cambio, si por iguales entendemos que aunque la estructura es distinta tienen los mismos datos, tu código no es correcto. Imagina el nodo raíz con valores distintos, de dos árboles con los mismos datos pero con distinta estructura. Cuando llegues a

    if (a->dato == b->dato){ /* <== No hay valor de retorno en esta rama de ejecucion */
      iguales(a->izq, b->izq);
      iguales(a->der, b->der);
    } else {
      return 1;
    }

a->dato != b->dato, ya que aunque los valores almacenados son los mismos, los valores de los nodos raíz son distintos. Por lo tanto la función devolverá 1 a pesar de que debería devolver 0.

Tampoco puedes asegurar que los nodos hoja sean los mismos, ya que has podido introducir los datos en distinto orden y por lo tanto ocuparán posiciones distintas dentro del árbol.

Lo que tienes que hacer es un recorrido inorden de cada uno de los dos árboles e ir comparando los valores de los nodos.

¡Saludos!
#452
¡Buenas!

Llevo unas cuantas horas intentando buscar información sobre el tema de Win32 Loader, pero la que encuentro es escasa y mala (a lo mejor estoy saturado y no veo lo que tengo delante...)

Los pasos que sigo son:
- Creo un USB booteable utilizando unetbootin. (Debian 6)
- Entro en el pen y ejecuto setup.exe
- Sigo los pasos que me marca win32 loader.
- Reinicio el ordenador y entro en la instalación de debian.
- Llego hasta el punto en que me pide crear particiones, me cago en todo, mantengo pulsado el botón de encendido hasta que se apaga el ordenador, lo enciendo, entro en windows y desinstalo el lanzador de la instalación de debian.
- Busco información en internet
- Me pongo de mal humor porque no encuentro nada util que me explique paso por paso lo que tengo que hacer...
- Creo que no he entendido bien las cosas...

El último punto es la clave de todo el asunto.  :xD

Tenía entendido que win32 loader era equivalente a wubi. Cuando instalé ubuntu con wubi, como una aplicación mas de windows, no recuerdo haber tenido que reiniciar ni crear particiones. Se instalo como una aplicación mas de windows y cuando arranco el ordenador puedo escoger entre los dos SO.

¿No puedo hacer esto con debian? ¿Estoy obligado a tener que formatear una de las particiones y tener que mover todos los datos que tengo en ella para no perderlos?

Si alguno de vosotros ha conseguido instalar debian como un programa de windows sin tener que perder o mover datos me gustaría saber como lo ha hecho...

¡Saludos!
#453
Si hombre si. Tu ponte cómodo con tus zapatillas de andar por casa, tu pijama, la batita y te acomodas tranquilamente en el sofá con un baso de coñac en una mano y una pipa en la otra. Mientras tanto nosotros te hacemos el trabajo. Dejanos tu numero de telefono que en cuanto este te llamamos. ¿Quieres alguna cosa mas o con lo ya dicho es suficiente? ¿Una señorita de compañia te vendria bien para hacer mas leve la espera? (o señorito, aquí no somos quisquillosos con estos temas)

¡Saludos!
#454
¡Buenas!

Mas sencillo que Taylor(Quien ha hablado de Taylor???  :silbar:). Con Bolzano puedes hacerlo perfectamente (o por el teorema de los valores intermedios). Ademas Bolzano lo has tenido que estudiar en bachiller y sabes como funciona. x es raiz cuadrada de c si y solo si c - x2 = 0

En principio solo tienes que calcular la raiz cuadrada positiva, por lo que una cota inferior de la raiz cuadrada siempre sera cero. Y como cota superior tienes dos opciones. Si c > 1, tomas como cota superior c, y si c<1 la cota superior escogida tiene que ser 1. Ten en cuenta que tienes dos casos particulares, que coinciden con los valores 0 y 1 que estas utilizando como cotas especificas, en los que sabes exactamente cual es el valor de la raiz.

Una vez comprobado que el valor del que quieres obtener la raiz cuadrada no es ni cero ni uno, empiezas a iterar:
- Calculas el punto medio del intervalo [cota_inferior,cota_superior]
- Si punto_medio al cuadrado > valor -> cota_superior = punto_medio
- Si punto_medio al cuadrado < valor -> cota_inferior = punto_medio
- Si punto medio al cuadrado = valor -> raiz_cuadrada = punto_medio
- Repetir mientras absoluto(valor - punto_medio al cuadrado) > error_que_yo_quiera.

En ocasiones puedes llegar a un punto que no sea la raiz pero que no cambie, asi que tambien deberias controlar que el punto medio de una iteracion no sea el mismo que el de la anterior. Si sucede esto ultimo, el valor que obtengas sera la mejor aproximacion que puedas conseguir.

¡Saludos!

Y si no quieres recurrir a metodos iterativos puedes usar el siguiente razonamiento:

x2 = c -> 2 Ln(x) = Ln(c) -> Ln(x) = Ln(c) / 2 -> x = eLn(c)/2

O equivalentemente x = blogb(c)/2

¡Saludos!
#455
¡Buenas!

Creo que el error está aquí:
Código (cpp) [Seleccionar]

alumno1=a1[1];
alumno2=a1[2];
alumno3=a1[3];
alumno4=a1[4];


Estás asignando objetos enteros a objetos de tipo alumno. No se si el compilador que utilizas llamara directamente al constructor de conversión o si espera que el operador de asignación esté sobrecargado... De todas formas el constructor de conversión que utilizas está modificando el vector de la clase, no la variable que utilizas para obtener el valor de la operacion +=

Otro error que estás cometiendo es que consideras subindices en un rango 1-4 para un vector de cuatro elementos. Los subindices deberian estar entre 0 y 3.

Cambia esto y nos cuentas.

¡Saludos!
#456
¡Buenas!

Cuando intentas leer un entero pero introduces un caracter, se activa el failbit de istream. Por lo tanto primero tendrás que intentar leer el dato. Luego comprobar si se ha activado el failbit y si asi ha sucedido, resetearlo y vaciar el buffer de entrada:

Código (cpp) [Seleccionar]

while((cin>>dato).fail()) //comprobamos los flags de error con la referencia que devuelve el operador >>
{
    cin.clear(); //reseteamos los flags
    while(cin.get() != '\n'); //leemos todo lo que quede en la entrada
    //Si quieres pones un mensaje de error y vuelves a solicitar los datos
}

//Al salir del bucle sabemos que hemos leido el dato que corresponde


¡Saludos!
#457
¿Valla por Dios? ¿En serio?

Arrancadme los ojos por favor, o no. Mejor voy directo a por un tenedor y me los arranco yo mismo. Vaya por Dios, lo que hay que ver...
#458
No entiendo porque os llevais las manos a la cabeza. Son sus costumbres y punto.

Aqui, en españa, la costumbre dicta que es peor tener una pagina de enlaces que mandar a alguien al hospital de una paliza o el acoso sexual y en EEUU se permite tener armas a cualquier desequilibrado que segun el dia que tenga, te organiza una matanza a lo terminator...

Solo son eso, costumbres. Y antes de criticar las de los paises extranjeros, centraos en la mi*rda de vuestro propio pais, que aunque no querais verla, esta ahi y huele que da miedo.

¡Saludos!
#459
¡Buenas!

Otra alternativa es utilizar números racionales. Con racionales puedes aproximar un número real todo lo que quieras (es decir, puedes cometer un error todo lo pequeño que quieras).

¡Saludos!
#460
¡Buenas!

¿Has comprobado que el último caracter no sea un salto de línea o cualquier caracter de espacio?

¡Saludos!