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 ... 16 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 ... 122
301  Programación / Programación General / Re: [Ehn-Dev 2010] - Concurso de desarrollo de aplicaciones - Hilo oficial. en: 23 Noviembre 2010, 00:14 am
Hilo oficial abierto!

Comienza el periodo para entregar las aplicaciones! finaliza el 30 de noviembre.  :D
302  Programación / Programación General / Re: [Ehn-Dev 2010] FAQ - Hilo para preguntar todas las dudas acerca del concurso! en: 23 Noviembre 2010, 00:11 am
Hilo oficial abierto!



Comienza el periodo para entregar las aplicaciones, finaliza el día 30 de noviembre!
303  Programación / Programación C/C++ / Re: Problema con vector y direcciones en: 21 Noviembre 2010, 22:45 pm
No he visto todo el código porque deje de leer cuando vi los arreglos globales. Yo te recomendaría que te bajes "Como programar en C/C++" de Deitel y Deitel y en todo caso vayas directo al capitulo de punteros.
Si no entendes algo de lo mencionado anteriormente, postea las dudas puntuales y las vemos.

Esto te lo digo porque al parecer no entendiste lo que te mencione antes, y me pareció que estaba bien explicado. Es decir, en vez de modificar el diseño del programa para pasar el array por referencia, optaste por usar un array global logrando que no tenga sentido siquiera pasar nada por referencia. Es decir, un array declarado en un scope global permite que puedas acceder a ese array desde cualquier función sin necesidad de ningún tipo de pasaje ni de ningún tipo de retorno, por tanto el uso de los punteros en este caso en particular pierde el sentido completamente.

Mira este ejemplo:

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. void imprimir(); //Funcion que retorna void, no acepta ningun parámetro.
  5.  
  6. int array[]={1,2,3,4,5}; //Array global
  7.  
  8. int main()
  9. {
  10. imprimir(); //Llamando funcion
  11.  
  12. cin.get();
  13. }
  14.  
  15. void imprimir()
  16. {
  17. for(int i=0;i<5;i++)//Imprimiendo elementos del array global
  18. cout<<array[i]<<endl;
  19. }
  20.  

Como podrás ver, accedes perfectamente desde cualquier función al array global sin necesidad de pasarlo siquiera como parámetro, por eso mismo se denomina global. Es una mala practica declarar variables/objetos globales dado que cualquier función puede modificar su contenido y por ende se hace mas difícil validar los datos u controlar los errores.



Por otro lado, el manejo de punteros es bastante amplio y dependiendo de como se utilicen depende el significado de la sentencia, no es lo mismo hacer esto:

Código
  1. cout<<*ptr<<endl;
  2. ptr++;

que hacer esto:

Código
  1. cout<<ptr[i]<<endl; // == *(ptr+i);

Un ejemplo:


Para ordenar un array pasándolo como referencia a una función, te basta con seguir este pequeño bosquejo:


Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. void imprimir(int*); //Puede ser bool o int, dependiendo si queres retornar algun valor util para chequeo de errores
  5.  
  6. int main()
  7. {
  8. int array[]={1,2,3,4,5};
  9.  
  10. imprimir(array); // Pasaje por referencia automatico, el identificador del array es como si fuese un puntero
  11.  
  12. cin.get();
  13. }
  14.  
  15. void imprimir(int *ptr)
  16. {
  17.  
  18. for(int i=0;i<5;i++)
  19. cout<<ptr[i]<<endl;
  20. }

Añadiendo las funciones de ordenamiento y por supuesto del ingreso de datos. El proceso a seguir es similar.

Pero recomiendo que te bajes el libro que te mencione al principio, explica los punteros de manera bastante amigable y comprensible.

Saludos
304  Programación / Programación General / Re: Glosario de téminos de programación [elhacker.net] en: 21 Noviembre 2010, 21:16 pm
Agregados algunos términos.

Recuerden que:

Citar
Pueden aportar los términos que quieran con o sin su definición correspondiente, los iremos poniendo en este post y creando el glosario. Los términos pueden estar compuestos por varias palabras y las definiciones se modificaran para crear un conjunto mas o menos uniforme (extensión, registro del lenguaje utilizado...).
Saludos!
305  Programación / Programación C/C++ / Re: Problema con vector y direcciones en: 21 Noviembre 2010, 19:18 pm
Los arreglos locales declarados en una función permanecen solamente en el ámbito de la función respectiva.

Todo esto:

Código
  1. int aux, a=0,i, array2[10];;

desaparece al finalizar la función "OrdenarMeMa" por lo tanto no puedes acceder a "array2" desde otro modulo por mas que trates de retornar su dirección; al finalizar la función "OrdenarMeMa", "array2" es inaccesible.
No se que le pasara a tu GCC, porque como mínimo te tendría que haber dado un warning al retornar la dirección de una variable local desde una función.



Luego, el valor de retorno de la función "OrdenarMeMa" es incorrecto, ya que esta declarada como para retornar un entero y vos estas retornando un puntero a entero:

Debería ser algo así:

Código
  1. int* OrdenarMeMa(int* array)

o simplemente retornar un valor entero (0,1 u bool: true, false, como gustes) para chequear si la función fallo o cumplió su tarea correctamente. Si estas pasando el arreglo a ordenar mediante un puntero, no necesitas retornar nada, ya que los arreglos locales se pasan automáticamente por referencia dado que su identificador (su nombre) actúa en forma similar a un puntero.



Seguís teniendo los errores que ya te mencionaron:

Código
  1. for(a==0;a<10;a++)

== es para comparar, = es para asignar.

Código
  1. cout<<*arrayord[a]<<" | ";

Estas tratando a un puntero como a un doble puntero.




Dale un repaso al tema de punteros, parece difícil al principio pero luego se hace mas fácil.

Saludos
306  Programación / Programación C/C++ / Re: [ C++ ] Ayuda con esta clase!!! en: 21 Noviembre 2010, 00:31 am
Cuando usas callbacks lo ideal es que utilices funciones estándar u miembros static. De otra forma aparecen estos errores, ya que un miembro de una clase no es lo mismo que una función, siendo que el primero tiene un parámetro oculto (this) y opera en el marco de un objeto.

 Si usas la clase a modo de contenedor siempre podes declarar todos los miembros static, pero no habría forma de acceder a las variables miembro por tanto tendrías que usar globales. No es una muy buena idea pero tal vez es la solución mas fácil, pero no tendría mucho sentido ya que seria como no utilizar una clase en absoluto.
 
 Otra es declarar el proc como static:
 
 
Código
  1. static LRESULT CALLBACK Proc(HWND, UINT, WPARAM, LPARAM);

y darle un par de vueltas al resto del código.
 
 O podes hacer un miembro static que haga como intermediario, algo así:
 
 
Código
  1. static LRESULT CALLBACK WrappingSome(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)//The tricky way...
  2. {
  3. a* ObjPtr = reinterpret_cast<a*>(GetWindowLong(hWnd, GWL_WNDPROC));
  4. return ObjPtr->NewProc( hWnd, uMsg, wParam, lParam );
  5. }
  6.  


Y hay otras formas mas, pero comienza buscando sobre punteros a miembros para tener claro el porque del error y el porque te funciona utilizando funciones y no miembros.

Saludos
 
 
307  Informática / Hardware / Re: Problema con Mouse Ps2 en: 20 Noviembre 2010, 16:57 pm
No, no se puede. Como ya te ha dicho Aprendiz, PS2 no es USB, los primeros no están diseñados para conectar en caliente.

Si necesitas desconectar y conectar con el sistema encendido, compra un mouse USB.

Extendiendo un poco lo que mencionaba en mi mensaje anterior, revisa este link

Saludos
308  Programación / Programación C/C++ / Re: Menus y librerías para juegos. OpenGL. en: 20 Noviembre 2010, 16:49 pm
Si, se puede, de lo contrario no la hubiese mencionado en primera instancia. El tema es que no vas a tener ventanas rebotando y menúes coloridos a los 5 minutos de codificar. Independientemente de la librería que elijas te vas a tener que meter a darle un tiempo para ver que podes lograr y como hacerlo.
309  Informática / Hardware / Re: Problema con Mouse Ps2 en: 20 Noviembre 2010, 16:18 pm
Depende de la interfaz utilizada en la conexión. Mediante USB se puede desconectar y conectar pero si la interfaz es PS2 depende de otros factores. Los dispositivos PS2 no fueron creados en primera instancia para que soporte hot swapping, aunque obviamente en la actualidad se soporta es posible que al reconectar el sistema no reconozca el dispositivo, y en esos casos no queda mas alternativa que reiniciar.



310  Programación / Programación C/C++ / Re: Menus y librerías para juegos. OpenGL. en: 20 Noviembre 2010, 15:52 pm
Citar
Sisi, definitivamente quiero que sea portable, SDL lo vi facil de usar, pero como veo que dice 16BITBoy, soporta solo cargar imágenes en BMP

Con SDL podes cargar otro tipo de imágenes perfectamente utilizando SDL_IMAGE.

SDL


Páginas: 1 ... 16 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 ... 122
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines