elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ... 45
61  Programación / Programación C/C++ / [C++][Consulta] Error inesperado con destructor en: 3 Febrero 2017, 04:28 am
Hola, muy buenas. Estoy realizando un árbol binario en C++. Lo estoy encapsulando en una clase. Como cualquier árbol binario, este tiene un dato, un puntero a la izquierda y otro a la derecha. El problema es que al llamar al destructor (el cual lo elimina), el programa finaliza brúscamente. El constructor es el siguiente:

Código
  1. template <typename T>
  2. class ArbolBinario {
  3.   private:
  4.      T dato;
  5.      ArbolBinario *izda;
  6.      ArbolBinario *dcha;
  7.  
  8.      void Eliminar(ArbolBinario *rama) {
  9.         if(NULL != rama->izda)
  10.            Eliminar(rama->izda);
  11.  
  12.         if(NULL != rama->dcha)
  13.            Eliminar(rama->dcha);
  14.  
  15.         delete rama;
  16.      }
  17.  
  18.   public:
  19.      [...]
  20.  
  21.      ~ArbolBinario() {
  22.         EliminarRamaIzda();
  23.         EliminarRamaDcha();
  24.      }
  25.  
  26.      [...]
  27.  
  28.      void EliminarRamaIzda() {
  29.         if(NULL != izda) {
  30.            Eliminar(izda);
  31.            izda = NULL;
  32.         }
  33.      }
  34.  
  35.      void EliminarRamaDcha() {
  36.         if(NULL != dcha) {
  37.            Eliminar(dcha);
  38.            dcha = NULL;
  39.         }
  40.      }
  41.  
  42.      [...]
  43. };

Este es la función main:

Código
  1. int main() {
  2.   ArbolBinario<int> arbol;
  3.  
  4.   arbol.SetDato(7, "");
  5.   arbol.ReemplazarRamaIzda(20, "");
  6.   arbol.ReemplazarRamaIzda(5, "0");
  7.   arbol.ReemplazarRamaDcha(7, "00");
  8.   arbol.ReemplazarRamaDcha(4, "0");
  9.   arbol.ReemplazarRamaIzda(1, "01");
  10.   arbol.ReemplazarRamaDcha(2, "01");
  11.   arbol.ReemplazarRamaDcha(8, "");
  12.   arbol.ReemplazarRamaIzda(10, "1");
  13.  
  14.   cout << arbol.ToString();
  15.  
  16.   return 0;
  17. }

Cuando uso el depurador, pongo un punto de ruptura en el destructor, y obtengo lo siguiente:

Código:
Breakpoint 1, ArbolBinario<int>::~ArbolBinario (this=0x28fddc, __in_chrg=<optimized out>) at main.cpp:84
84               EliminarRamaIzda();
(gdb) continue
Continuing.

Breakpoint 1, ArbolBinario<int>::~ArbolBinario (this=0x720fb0, __in_chrg=<optimized out>) at main.cpp:84
84               EliminarRamaIzda();
(gdb) continue
Continuing.

Breakpoint 1, ArbolBinario<int>::~ArbolBinario (this=0x7212f0, __in_chrg=<optimized out>) at main.cpp:84
84               EliminarRamaIzda();
(gdb) continue
Continuing.

Program received signal SIGSEGV, Segmentation fault.
0x004099bb in ArbolBinario<int>::Eliminar (this=0x0, arbol=0x726f58)
    at main.cpp:13
13            void Eliminar(ArbolBinario *arbol) {

Lo que no sé es: ¿por qué se llama 3 veces al constructor? En la última llamada, ¿por qué el puntero this vale 0 (supongo que por esto el programa crashea)?

Muchas gracias
62  Informática / Electrónica / (Arduino) ¿Qué estructura de paquete me recomiendan para comunicación serial? en: 29 Enero 2017, 22:26 pm
Hola, muy buenas! Estoy estableciendo una comunicación serial entre mi Arduino y mi PC, pero me doy cuenta de que pierdo a veces algún byte. Entonces creo que usar un sistema de paquetes evitaría este problema en mayor medida (lo he supuesto, no demostrado). Me baso en que la transmisión de datos por red se hace por paquetes.

Entonces la pregunta es: ¿qué estructura de paquete me aconsejan que tenga? Principalmente espero enviar variables tipo entero pero quizás envíe otras cosas.

Sé que la estructura básica (y lógica) de estos es:

Cabecera
Datos
Cola

Lo que no sé es cuantos bytes debería ocupar cada cosa, sobre todo los datos. En la cabecera no tengo ni idea de qué debería incluir, y en la cola tampoco.

Muchas gracias!
63  Programación / Programación C/C++ / Re: Me pueden ayudar a convertir este codigo C++ a C en: 16 Enero 2017, 09:00 am
eso no es C++, eso es arduino que es más parecido a java que otra cosa...

teoricamente y si tienes las funciones predefinidas, de get_corriente en adelante es 100% compatible con C

En realidad, si que es C++. Usa un compilador en C++. He aquí el código que se incluye (el cual incluye la función main).

Código
  1. #include <Arduino.h>
  2.  
  3. int atexit(void (* /*func*/ )()) { return 0; }
  4.  
  5. void initVariant() __attribute__((weak));
  6. void initVariant() { }
  7.  
  8. void setupUSB() __attribute__((weak));
  9. void setupUSB() { }
  10.  
  11. int main(void)
  12. {
  13. init();
  14.  
  15. initVariant();
  16.  
  17. #if defined(USBCON)
  18. USBDevice.attach();
  19. #endif
  20.  
  21. setup();
  22.  
  23. for (;;) {
  24. loop();
  25. if (serialEventRun) serialEventRun();
  26. }
  27.  
  28. return 0;
  29. }
64  Programación / Programación C/C++ / Re: Doble buffer en OpenGL (glfw) en: 16 Enero 2017, 08:48 am
Seguramente hayas quitado del while la función glfwPollEvents(). Lo que hace esta función es actualizar los eventos que le manda Windows o los periféricos, y si no se actualizan, Windows entiende que la aplicación se ha quedado colgada.
65  Programación / Programación C/C++ / Re: aprender a usar la API de windows. en: 7 Enero 2017, 06:05 am
La API de Windows se compone principalmente de funciones y estructuras. Si no sabes muy bien qué significan estos términos, mejor aprende primero a programar bien en C o en C++ (aconsejo C porque la API de Windows se basa en C). Si sabes bien lo que es una estructura o función, aprender la API de Windows es tan "simple" como ver de qué funciones dispone y tal.

Si no entiendes el funcionamiento de alguna función puedes preguntarlo. Aquí dejo un tutorial en español sobre creación de ventanas, diálogos... con la API de Windows:

http://winapi.conclase.net/curso/index.php
66  Programación / Programación C/C++ / Re: Ayuda con ejercicio basico en C en: 11 Diciembre 2016, 19:31 pm
void leerMediciones(int m[NUMPIPETAS][MAXMEDICIONES])

Ni en C ni en C++ puedes pasar arreglos multidimensionales por parámetros, lo que puedes pasar son punteros dobles. Cuando haces este prototipo, el programa compila, pero cuando llamas a la función con un arreglo multidimensional, este se convierte a puntero a puntero, por lo que produce efectos indeterminados.
67  Sistemas Operativos / GNU/Linux / Re: (Consulta) Instalar Dual-Boot desde Ubuntu 16.04 en: 13 Noviembre 2016, 22:08 pm
Cuando intento instalar el grub-customizer, me sale que hay dependencias que no son instalables:

Código:
grub-customizer:i386 : Depende: libatkmm-1.6-1:i386 (>= 2.22.1) pero no es instalable
                        Depende: libcairomm-1.0-1:i386 (>= 1.6.4) pero no es instalable
                        Depende: libglibmm-2.4-1c2a:i386 (>= 2.32.0) pero no es instalable
                        Depende: libgtkmm-2.4-1c2a:i386 (>= 1:2.24.0) pero no es instalable
                        Depende: libpangomm-1.4-1:i386 (>= 2.27.1) pero no es instalable
                        Depende: libsigc++-2.0-0c2a:i386 (>= 2.0.2) pero no es instalable
                        Recomienda: hwinfo:i386 pero no va a instalarse
68  Sistemas Operativos / GNU/Linux / Re: (Consulta) Instalar Dual-Boot desde Ubuntu 16.04 en: 13 Noviembre 2016, 15:36 pm
Esto es muy curioso... He cambiado la configuración de la bios de "Legacy support" a "UEFI", y ha arrancado desde linux, y cuando cambio de nuevo a "Legacy support", arranca desde Ubuntu...

He probado ese Super Grub Disk. Quizás sea ese "gestor" el que me permite hacer lo que he descrito antes, pero no he conseguido instalar ningún "cargador de cargadores de sistemas operativos" con ese cargador... Ahora que puedo trabajar desde Windows, ¿cómo podría hacer para instalar un cargador de cargadores de sistemas operativos desde Windows? Según tengo entendido, es más sencillo.

Muchas gracias
69  Sistemas Operativos / GNU/Linux / (Consulta) Instalar Dual-Boot desde Ubuntu 16.04 en: 12 Noviembre 2016, 22:52 pm
Hola, muy buenas. En mi afán por preservar Windows, pero a su vez poder usar Ubuntu sin una molesta máquina virtual, decidí instalar Ubuntu desde Windows. Después de una serie de problemas (básicamente Ubuntu no detectaba Windows 8.1), desde Windows creé una partición para Ubuntu, creé desde el instalador de Ubuntu las particiones swap, el directorio raíz, y un MB de partición para (supongo) la MBR (seleccioné algo de BIOS). El caso es que no esperaba que directamente me dejara la opción de seleccionar sistema operativo, pero lo que si esperaba es que el ordenador arrancara desde Windows. No es un problema grave (creo), porque no he perdido mis datos.

En resumidas cuentas, me gustaría saber cómo puedo instalar algo parecido (sino este) al Dual-Boot desde Ubuntu. Muchas gracias!

______________________________________

Cuando ejecuto "sudo fdisk -l | grep sda", me sale:

Código:
Disk /dev/sda: 465,8 GiB, 500107862016 bytes, 976773168 sectors
/dev/sda1       2048    616447    614400   300M Windows recovery environment
/dev/sda2     616448    821247    204800   100M EFI System
/dev/sda3     821248   1083391    262144   128M Microsoft reserved
/dev/sda4    1083392 554534911 553451520 263,9G Microsoft basic data
/dev/sda5  554534912 554536959      2048     1M BIOS boot
/dev/sda6  970913792 976771071   5857280   2,8G Linux swap
/dev/sda7  554536960 970913791 416376832 198,6G Linux filesystem
70  Foros Generales / Dudas Generales / (wxMaxima) Consulta sobre enunciado de un ejercicio (conjuntos y ordenación) en: 4 Noviembre 2016, 00:04 am
Hola, muy buenas. Antes de nada, quiero aclarar que no voy a pedir que se me haga el ejercicio. Simplemente me gustaría que se me explicase una parte del enunciado que, sinceramente, no entiendo.

El enunciado es el siguiente:
Código:
Sea X = {1, 2, 3, 4, 5, 6, 7}, e Y = X x X x X. Consideramos en X el orden lexicográfico.
Dadas las siguientes parejas x,y pertenecientes a Y determina quien es mayor, y encuentra
el conjunto de todos los elementos de Y comprendidos entre x e y.

* x = (4, 2, 1), y = (5, 6, 2)
* x = (1, 4, 7), y = (7, 4, 1)
* x = (6, 4, 5), y = (2, 4, 1)

El ejercicio lo tengo que hacer en wxMaxima, el cual es un programa para el manejo de varios objetos matemáticos, como conjuntos, listas, funciones (aplicaciones)...

Bien, la parte que no entiendo que quiere decir es esta: Consideramos en X el orden lexicográfico

¿Qué quiere decir con que consideremos en X el orden lexicográfico? Sé lo que es el orden lexicográfico, pero no sé qué quiere decir eso de "consideremos en X ..."

¡Muchas gracias por su ayuda!
Páginas: 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ... 45
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines