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 - MAFUS

#921
Hay muchas formas diferentes. Depende de si es un entorno visual o si es por consola.
Cada entorno visual tiene su forma de manejar eventos.
Si es por consola puedes apoyarte en tu sistema operativo y usar su API, o buscar una biblioteca que se encargue de ello. Si este último es tu elección te recomiendo ncurses. Si vas a usar el S.O. y es Linux busca información sobre termios. Para todo lo demás ni idea.
#922
Si pudieras pasar tu código entero para probar mejor.

La idea es:
Código (c++) [Seleccionar]

static void Eliminar(ArbolBinario **raiz) {
   // como no soy de C++ no sé si aquí el operador &
   // en el argumento ArbonBinario &rama te podría funcionar
   if(*raiz) {
       delete *raiz;
       *raiz = NULL;
   }
}

void EliminarRamaIzda() {
   if(!izda) {
       delete izda;
       izda = NULL;
   }
}

void EliminarRamaDcha() {
   if(!dcha) {
       delete dcha;
       dcha = NULL;
   }
}

~ArbolBinario() {
   EliminarRamaIzda();
   EliminarRamaDcha();
}


Lo dicho, si tuviera el código completo del árbol podría probarlo, pero por ahora esa es mi idea. Puede tener una infinidad de bugs, código no probado.
#923
Míralo de esta forma:
Es un flujo de datos y debe poder mover cualquier dato. Si tomara EOF como marca de final querría decir que no podría, en ningún caso, tomar ese valor aún fuera numérico para una operación matemática y por tanto se limitaría, de forma artificial, el rango de valores que pudiera tomar.
#924
A mi entender duplicas las cosas.
En el destructor vas a borrar las dos ramas por separado pero estas funciones terminan apoyándose en Eliminar, que de igual forma vuelve a borrar a la izquierda y a la derecha por sí misma.
Tal vez debería ser al revés, que Eliminar estuviera a un nivel superior y fuera las que llamara a eliminar izquierda y derecha para borrar así el nodo completo.

De igual forma, tal y como lo tienes, solo EliminarRamaIzda y EliminarRamaDcha se encargan de llevar a NULL el puntero pero Eliminar no lo hace. ¿Llega el programa a un punto en que Eliminar pasará sobre un puntero que ya ha sido borrado previamente?
#925
Ni siquiera compila. Supongo que se ha equivocado copiando el fuente.
#926
Al ser una ruta entrecomillada y ser relativa debes partir desde el mismo directorio del archivo que tiene ese include, ir a su carpeta padre (subir un nivel) y desde allí abrir el directorio include. En él encontrarás el archivo.
#927
Lo más sencillo es crear una máquina de estados. Es decir, tu buscas la secuencia ' sak', nótese el espacio delante.
Empiezas por un estado de 0 que quiere decir que no tienes ningún carácter de la secuencia.
Sólo cuándo encuentres el espacio pasas al estado 1.
Sigues en el estado 1 mientras encuentres espacios.
Si encuentras el carácter 's' o 'S' pasas al estado 2, si encuentras otro carácter diferente a la 's', 'S', o ' ', regresas al estado 0.
Estando en estado 2 sigues mirando caracteres. Si es una 's' o 'S' sigues en estado 2, si es 'a' o 'A' pasas al estado 3, si es otra situación regresas al estado 0.
Estando en estado 3 sigues mirando caracteres. Si es una 'k' o 'K' sigues en estado 3, si es un espacio ' ' has encontrado la secuencia y aumentas un contador y regresas al estado 0.

Pero te encontrarás con un problema: Si empiezas de esta forma y la primera palabra es sak NO te la contará. Te dejo que resuelvas eso.
#928
No debes citar tu código, debes ir a Código GeSHi y buscar el lenguaje en que está. El editor creará unas etiquetas y tu código debe ir en medio de ellas.
#929
Mira, esto ya es otra cosa.
Empieza por un array de strings (char* )con 30 palabras diferentes.
Crea una función que de forma aleatoria asigne 5 números irrepetibles, del 0 al 29, a cada uno de los tres jugadores. Estos números serán índices del array de palabras. Estas serán las palabras que tendrán que adivinar. Como puedes ver cada jugador deberá tener un array de 5 enteros.

Empieza con eso.
#930
Programación C/C++ / Re: Ayuda
30 Enero 2017, 08:00 AM
Se queda el caracter de nueva línea en stdin, el del INTRO.

Después de scanf usa
while(getchar() != '\n');