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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Mensajes
Páginas: 1 ... 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 [32] 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 ... 83
311  Programación / Programación C/C++ / Re: Error cvFindContour en Opencv en: 19 Marzo 2013, 23:11 pm
Lo más seguro es que se te haya olvidado inicializar la memoria:
Código
  1. static CvMemStorage* memoria = 0;
Que conste que no entiendo de OpenCV pero es lo más lógico siendo una violación de segmento.Para inicializarla creo que debes hacer esto:
Código
  1. memoria = cvCreateMemStorage(0);
¡Un saludo!
312  Programación / Programación C/C++ / Re: [Qt] Creación en horizontal por layouts? en: 18 Marzo 2013, 22:20 pm
Me alegro de que lo entiendas, para hacer un hueco debes hacer un layout entre dos layouts y ponerle este "widget"(QSpacerItem) http://qt-project.org/doc/qt-4.8/qspaceritem.html .Es un espacio, que puede ser vertical o horizontal y del tamaño que quieras.Si no le pones nada será un layout vacío tamaño 0 supongo...

¡Un saludo!
313  Programación / Programación C/C++ / Re: [Qt] Creación en horizontal automatizada? en: 18 Marzo 2013, 22:00 pm
Sí es exactamente como dices, en ese programa está ordenado así:

En los layouts horizontales, los widget se van añadiendo uno al lado del otro, y en los verticales en una pila, por eso sale como sale. Fíjate que el layout principal es un layout vertical no horizontal. Es sencillo de entender.

¡Un saludo!
314  Programación / Programación C/C++ / Re: Duda en programa uso char en: 18 Marzo 2013, 21:34 pm
Ufff , hay una forma más sencilla de hacerlo, cada letra en la tabla ASCII tiene un valor, la ñ es un carácter extendido por lo que tendrás que hacer otra cosa para añadirla, bueno si te fijas en esta tabla:

Las letras mayúsculas van desde el rango 65 hasta el 90, sin la ñ. Para que la A te quede como 1 pues haces 65 - 64 , y tienes la posición desde las letras A hasta la N , para los rangos desde la O hasta la Z puedes restar el valor de la letra menos 63 dado que en la tabla ASCII no cuentan la Ñ. En este código compruebo las letras y el valor que no sea pues siempre da 15 dado que sería la Ñ.
Código
  1. #include <iostream>
  2. #include <locale>
  3.  
  4. using namespace std;
  5.  
  6. int main ( int argc , char *argv[])
  7. {
  8.    char letra = 0;
  9.  
  10.    cout << "Introduzca la letra: ";
  11.  
  12.    cin.get(letra);
  13.  
  14.    letra = toupper(letra);
  15.  
  16.    if((letra >= 'A') && (letra <= 'N'))
  17.        cout << "La posicion de tu letra en el alfabeto es " << ((unsigned int)letra)-64 << endl;
  18.    else if ((letra >= 'O') && (letra <= 'Z'))
  19.        cout << "La posicion de tu letra en el alfabeto es " << ((unsigned int)letra)-63 << endl;
  20.    switch (letra)
  21.    {
  22.    case ' ':
  23.        cout << -1;
  24.        break;
  25.    default:
  26.        cout << "La posicion de tu letra en el alfabeto es " << 15 << endl;
  27.    }
  28.    return 0;
  29. }
Es que trabajar con la ñ es muy jodido quizás alguien de por aquí si sepa más que yo porque me parece que varía según el S.O.

¡Saludos!
315  Programación / Programación C/C++ / Re: Estructuras anidadas, funciones y punteros en: 17 Marzo 2013, 23:30 pm
Es que con el operador "->" lo que haces es acceder a un miembro ( variable ) de un puntero, y con el "." simplemente al miembro cuando no hay punteros de por medio... De ahí que cuando desreferencias con el "*" debas usar el "." . La diferencia de usar memoria dinámica ( calloc, malloc, realloc ... ) y memoria estática ( declaraciones de arrays etc ) la puedes leer aquí:

http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C/Manejo_din%C3%A1mico_de_memoria

¡Saludos!
316  Foros Generales / Foro Libre / Re: ¿Quien dice que el hacking no deja dinero? en: 17 Marzo 2013, 17:03 pm
¡Felicidades! Es un orgullo que haya personas así, te mereces lo que has ganado.

¡Saludos!
317  Programación / Programación C/C++ / Re: Estructuras anidadas, funciones y punteros en: 17 Marzo 2013, 16:46 pm
---------------------------------------------------------------------------------------------------------------------------------------
El problema es que si desreferencias el puntero a la estructura te quedas con el valor del primer elemento de la estructura(supongo que puede ser el número de clientes o no sé, por eso no puedes acceder a nada, la primera dirección de memoria de una estructura creo que normalmente es su primer elemento, dependiendo de como se organize la memoria...)(que conste que no lo tengo claro):
Código
  1. *(hotel + i).numero_clientes = 0;
---------------------------------------------------------------------------------------------------------------------------------------
Retirando lo dicho, es un problema de sintaxis, pues así si sale:
Código
  1. (*(hotel + i)).numero_clientes = 0;
Pues así no está mal, lo que pasa es que obviamente tienes que apuntar el puntero a la estructura, que la creo con calloc:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define NUM_HOTELES 3
  4.  
  5. /// DEFINICIÓN DE ESTRUCTURAS
  6. struct HOTEL
  7. {
  8.    int numero_clientes;
  9. };
  10.  
  11. typedef struct HOTEL HOTELES;
  12.  
  13. /// DECLARACIÓN DE FUNCIONES
  14. void HOTELES_inicializarHoteles(HOTELES *hotel);
  15.  
  16. int main (int argc, char *argv [])
  17. {
  18.    HOTELES *hotel;          
  19.    hotel = calloc(NUM_HOTELES,sizeof(HOTELES));//3 hoteles
  20.    HOTELES_inicializarHoteles(hotel); //Inicializamos el número de clientes de cada hotel a 0
  21.    return 0;
  22. }
  23. /// DEFINICIÓN DE FUNCIONES
  24. void HOTELES_inicializarHoteles(HOTELES *hotel)
  25. {
  26.    int i;
  27.  
  28.    for(i=0; i<NUM_HOTELES; i++)
  29.    {
  30.        (hotel+i)->numero_clientes = 0;
  31.    }
  32. }
318  Programación / Programación C/C++ / Re: Estructuras anidadas, funciones y punteros en: 17 Marzo 2013, 16:21 pm
Sería de gran ayuda que postearas los errores que te dá el compilador. A mí así me funciona perfectamente:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define NUM_HOTELES 3
  4.  
  5. /// DEFINICIÓN DE ESTRUCTURAS
  6. struct HOTEL
  7. {
  8.    int numero_clientes;
  9. };
  10.  
  11. typedef struct HOTEL HOTELES;
  12.  
  13. /// DECLARACIÓN DE FUNCIONES
  14. void HOTELES_inicializarHoteles(HOTELES *hotel);
  15.  
  16. int main (int argc, char *argv [])
  17. {
  18.    HOTELES hotel[NUM_HOTELES];          //3 hoteles
  19.  
  20.    HOTELES_inicializarHoteles(hotel); //Inicializamos el número de clientes de cada hotel a 0
  21.  
  22.    return 0;
  23. }
  24. /// DEFINICIÓN DE FUNCIONES
  25. void HOTELES_inicializarHoteles(HOTELES *hotel)
  26. {
  27.    int i;
  28.    for(i=0; i<NUM_HOTELES; i++)
  29.    {
  30.        hotel[i].numero_clientes = 0;
  31.    }
  32. }
Quizás te hayas confundido al declarar las estructuras puesto que se declaran así:
Código
  1. [struct] <identificador> <objeto_estructura>
Fuente: http://c.conclase.net/curso/?cap=011
Y tu la has declarado sin el struct:
Código
  1. HOTELES hotel[NUM_HOTELES];
Eso sí, si has puesto esto en el código no sé de que es el problema:
Código
  1. typedef struct HOTEL HOTELES;

¡Un saludo!
319  Programación / Programación C/C++ / Re: Mensaje en Movimiento Borland C++ en: 16 Marzo 2013, 00:27 am
Creo que esto debería funcionar ( no lo he comprobado pues estoy en Ubuntu y no sé como va aquí lo de mover las cosas por la pantalla, supongo que con ncurses EDITADO: funciona solo en Windows ). Bueno te he corregido algunas cosas como las asignaciones de los for's al valor de la variable "i" ya que lo haces usando el operador "==" (comparador lógico, lo cual conlleva error) y tienes que usar este "=" (operador de asignación). Bueno te dejo el código a ver si funciona:
Código
  1. ##include <iostream> //usar cout
  2. #include <cstdio>
  3. #include <cstdlib>
  4.  
  5.  
  6. #ifdef _WIN32
  7. #include <windows.h>
  8. #define cls system("CLS");
  9. void sleep(unsigned milliseconds)
  10. {
  11.    Sleep(milliseconds);
  12. }
  13. void gotoxy( int column, int line )
  14. {
  15.    COORD coord;
  16.    coord.X = column;
  17.    coord.Y = line;
  18.    SetConsoleCursorPosition(
  19.        GetStdHandle( STD_OUTPUT_HANDLE ),
  20.        coord
  21. );
  22. }
  23.  
  24. #elif defined  __unix__
  25.  
  26. #include <unistd.h>
  27. #define cls system("clear");
  28. void sleep(unsigned milliseconds)
  29. {
  30.    usleep(milliseconds * 1000); // takes microseconds
  31. }
  32. void gotoxy(int x, int y)
  33. {
  34.    printf("\033[%d;%df", y, x);
  35.    fflush(stdout);
  36. }
  37. #endif
  38.  
  39.  
  40.  
  41. using namespace std;
  42.  
  43. struct pos
  44. {
  45.    bool arriba;
  46.    bool abajo;
  47.    bool izquierda;
  48.    bool derecha;
  49.    int x;
  50.    int y;
  51. } posicion;
  52.  
  53. void moverHorizontalDerecha     ();
  54. void moverHorizontalIzquierda   ();
  55. void moverVerticalAbajo         ();
  56. void moverVerticalArriba        ();
  57.  
  58. int main (int argc, char * argv[])
  59. {
  60.  
  61.    posicion.arriba     = true;
  62.    posicion.izquierda  = true;
  63.    posicion.derecha    = false;
  64.    posicion.abajo      = false;
  65.    posicion.x          = 0;
  66.    posicion.y          = 0;
  67.  
  68.    for(;;)
  69.    {
  70.        if((posicion.arriba == true && posicion.izquierda == true))
  71.        {
  72.            moverHorizontalDerecha();
  73.            posicion.izquierda  = false;
  74.            posicion.derecha    = true;
  75.            moverVerticalAbajo();
  76.            posicion.arriba     = false;
  77.            posicion.abajo      = true;
  78.        }
  79.        else if((posicion.abajo == true) && (posicion.derecha == true))
  80.        {
  81.            moverHorizontalIzquierda();
  82.            posicion.izquierda  = true;
  83.            posicion.derecha    = false;
  84.            moverVerticalArriba();
  85.            posicion.arriba     = true;
  86.            posicion.abajo      = false;
  87.        }
  88.    }
  89.    getchar();
  90. }
  91. void moverVerticalArriba()
  92. {
  93.    for (; posicion.y != 0; --posicion.y)
  94.    {
  95.        cls
  96.        gotoxy(posicion.x,posicion.y);
  97.        printf("Hola");
  98.        sleep(10);
  99.    }
  100. }
  101. void moverVerticalAbajo()
  102. {
  103.    for (; posicion.y != 20; ++posicion.y)
  104.    {
  105.        cls
  106.        gotoxy(posicion.x,posicion.y);
  107.        printf("Hola");
  108.        sleep(10);
  109.    }
  110. }
  111. void moverHorizontalIzquierda()
  112. {
  113.    for(; posicion.x != 0; --posicion.x)
  114.    {
  115.        cls
  116.        gotoxy(posicion.x,posicion.y);
  117.        printf("Hola");
  118.        sleep(10);
  119.    }
  120. }
  121. void moverHorizontalDerecha()
  122. {
  123.    for(; posicion.x != 75; ++posicion.x)
  124.    {
  125.        cls
  126.        gotoxy(posicion.x,posicion.y);
  127.        printf("Hola");
  128.        sleep(10);
  129.    }
  130. }
320  Programación / Programación C/C++ / Re: ¿Por que no deberías usar el Devcpp? en: 10 Marzo 2013, 15:02 pm
Deberían ponerlo como chincheta, dado que mucha gente lo usa.
Páginas: 1 ... 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 [32] 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 ... 83
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines