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

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Mensajes
Páginas: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14 15 16
41  Foros Generales / Foro Libre / Re: Juguemos a las palabras encadenadas, Why Not? :D en: 26 Mayo 2013, 21:02 pm
Osezno

Sa1uDoS
42  Programación / ASM / Re: Pregunta acerca de MessageBox en: 26 Mayo 2013, 20:51 pm
invoke MessageBoxA,0,0,0,0 es lo mismo que
push 0
push 0
push 0
push 0
call MessageBoxA

invoke es una macro, si miras el código con Olly después de linkearlo verás que es solo para facilitarle la tarea al programador, en realidad queda con el call

Para ver información de las API pon en Google MessageBoxA MSDN y voilá http://msdn.microsoft.com/en-us/library/windows/desktop/ms645505(v=vs.85).aspx.

Sa1uDoS
43  Programación / Programación C/C++ / Re: Código fuente de Lynx en: 26 Mayo 2013, 16:38 pm
http://www.portalhacker.net/index.php/topic,123755.msg611545.html

Es lo básico.

Sa1uDoS
44  Programación / Programación C/C++ / Re: simulacion con matriz bidimensional de 10x10 en: 26 Mayo 2013, 15:30 pm
leosansan planteamos distintos problemas, yo sigo con llenar una matriz con todos los números sin que se repitan.

El código puede resumirse en (dentro del for):
Código
  1. x=rand()%MAX_X;
  2. y=rand()%MAX_Y;
  3. if(matriz[x][y]==-1)
  4. {
  5. matriz[x][y]=i;
  6. i++;
  7. }
  8.  



Tu alternativa para llenar de 0 a 1000 una matriz de 10x10 es muy ingeniosa, como ya dije mi código no hace eso ;).

Tranquilo que no lo tomo a mal, creo que la competencia es lo que nos hace mejorar, si nos conformamos con lo que sabemos o somos, no llegaremos jamás a ser los primeros!.

Sa1uDoS
45  Programación / ASM / Re: Pregunta acerca de MessageBox en: 26 Mayo 2013, 15:21 pm
MessageBoxA de ¿Ascii?
MessageBoxU de Unicode

Los 0 de la pila son argumentos de la función. MB_OK para las opciones y NULL para el Handle en este caso.

No se que es eso de PreguntaBox, me suena a una macro, desde luego una API no es.

Sa1uDoS
46  Programación / Programación C/C++ / Re: simulacion con matriz bidimensional de 10x10 en: 26 Mayo 2013, 11:25 am
La idea es interesante, pero hay números que pueden salir repetidos. Donde haces i+=rand()%19; puede salir 0 i+=0 es i y se repetiría un número. Mi código no necesita IF's pero esos if le ahorran muchas iteraciones.

Acabo de reducir más el código. En tiempo van parecidos, tarda aprox. 1 s (a veces se va a 2 s) en llenar una matriz de 1000*1000.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <time.h>
  5.  
  6. #define MAX_X 10
  7.  
  8. #define MAX_Y 10
  9.  
  10. int main()
  11. {
  12. srand(time(NULL));
  13. int matriz[MAX_X][MAX_Y], i, j, x, y, k;
  14.  
  15. memset(matriz, -1, sizeof(int)*(MAX_X*MAX_Y));
  16.  
  17. for(i=0;i<(MAX_X*MAX_Y);)
  18. {
  19. x=rand()%MAX_X;
  20. y=rand()%MAX_Y;
  21. if(matriz[x][y]==-1)
  22. {
  23. matriz[x][y]=i;
  24. i++;
  25. }
  26. else
  27. {
  28. for(k=-1;k<=1;k++)
  29. {
  30. for(j=-1;j<=1;j++)
  31. {
  32. if(matriz[x+k][y+j]==-1 && (x+k>=0 && x+k<MAX_X) && (y+j>=0 && y+j<MAX_Y))
  33. {
  34. matriz[x+k][y+j]=i;
  35. i++;
  36. }
  37. }
  38. }
  39. }
  40.  
  41. }
  42.  
  43. //~ for(i=0;i<MAX_X;i++)
  44. //~ {
  45. //~ putchar('\n');
  46. //~ for(j=0;j<MAX_Y;j++)
  47. //~ printf("%i\t", matriz[i][j]);
  48. //~ }
  49.  
  50. return 0;
  51. }
  52.  



EDITO:

Código:
[mrblood@ACER Codigos]$ time ./numeros

real 0m1.020s
user 0m0.987s
sys 0m0.010s
[mrblood@ACER Codigos]$ time ./numeros

real 0m0.996s
user 0m0.957s
sys 0m0.010s
[mrblood@ACER Codigos]$ time ./numeros

real 0m0.904s
user 0m0.877s
sys 0m0.003s
[mrblood@ACER Codigos]$ time ./numeros

real 0m0.892s
user 0m0.860s
sys 0m0.007s

Sa1uDoS
47  Programación / Programación C/C++ / Re: simulacion con matriz bidimensional de 10x10 en: 25 Mayo 2013, 23:19 pm
Maquinón? Uso archlinux con LXDE sobre un Acer TravelMate 291. (Pentium M a 1.4Ghz)

Las pruebas de tiempos se hacen siempre sin nada más ejecutándose ;).

Sa1uDoS
48  Programación / Programación C/C++ / Re: Crear un pequeño programa en C++ para WIN para detectar las direcciones MAC en: 24 Mayo 2013, 16:29 pm
RAW Sockets para armar los paquetes ARP. Aunque creo que en Windows no hay posibilidad de lanzar RAW Sockets.

Sa1uDoS
49  Programación / Programación C/C++ / Re: simulacion con matriz bidimensional de 10x10 en: 24 Mayo 2013, 10:37 am
Leí:
la matriz debe contener 100 numeros positivos entre 1 y 100
Pero no ví:
Construir un programa que genere una matriz 10x10 esta debe ingresar numeros entre 1 y 1000 positivos aleatoriamente sin repetir numero (hasta aqui ya construi el programa)dentro de la matriz la pelota debe recorrer la matriz de la siguiente forma:

El segundo código que planteas ronda los 0.012s (máximo los 0.015s). Si haces las pruebas en el mismo PC la gráfica será la misma para todos los códigos, para bien o para mal.

Quitando los cout y los printf mi código anda sobre los 0.002s y el tuyo sobre los 0.006s ;).

Esta tarde intentaré arreglarlo para que funcione con más cifras ;).

Sa1uDoS
50  Programación / Programación C/C++ / Re: simulacion con matriz bidimensional de 10x10 en: 24 Mayo 2013, 08:35 am
Dejo una alternativa que me parece que es más eficaz. (No recorre toda la matriz para comprobar si existe o no el valor).

Como necesitas tener todos los números del 0-99 es mejor aleatorizar la posición que el valor (Creo). ;)

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <time.h>
  5.  
  6. int main()
  7. {
  8. srand(time(NULL));
  9. int matriz[10][10], i, j, x, y;
  10.  
  11. memset(matriz, 0, sizeof(int)*100);
  12.  
  13. for(i=0;i<100;i++)
  14. {
  15. x=rand()%10;
  16. y=rand()%10;
  17. if(matriz[x][y]==0)
  18. {
  19. matriz[x][y]=i;
  20. }
  21. else
  22. {
  23. i--;
  24. continue;
  25. }
  26.  
  27. }
  28.  
  29. for(i=0;i<10;i++)
  30. {
  31. putchar('\n');
  32. for(j=0;j<10;j++)
  33. printf("%i\t", matriz[i][j]);
  34. }
  35.  
  36. return 0;
  37. }
  38.  

EDITO:
El tiempo baja de 0.007s a 0.003s (a veces es 0.004 y el máximo son 0.005 pero los habitual es 0.003) casi la mitad ;). Creo que aun se puede mejorar el código.

Añado otro código que hace que casi hasta el 80 se rellene del tirón, creo que puede hacerse sin tanto if, pero no tengo más tiempo hoy. Este código comprueba si las celdas cercanas están en 0 para no tener que repetir el ciclo tantas veces. Creo que aún se puede hacer en menos ciclos del for. Ahora usará unos 129.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <time.h>
  5.  
  6. int main()
  7. {
  8. srand(time(NULL));
  9. int matriz[10][10], i, j, x, y;
  10.  
  11. memset(matriz, 0, sizeof(int)*100);
  12.  
  13. for(i=0;i<100;i++)
  14. {
  15. printf("%i\n", i);
  16. x=rand()%10;
  17. y=rand()%10;
  18. if(matriz[x][y]==0)
  19. {
  20. matriz[x][y]=i;
  21. }
  22. else
  23. {
  24. if(matriz[x][y+1]==0 && y+1<10)
  25. {
  26. matriz[x][y+1]=i;
  27. continue;
  28. }
  29. if(matriz[x][y-1]==0 && y-1>=0)
  30. {
  31. matriz[x][y-1]=i;
  32. continue;
  33. }
  34. if(matriz[x-1][y]==0 && x-1>=0)
  35. {
  36. matriz[x-1][y]=i;
  37. continue;
  38. }
  39. if(matriz[x-1][y-1]==0 && x-1>=0 && y-1>=0)
  40. {
  41. matriz[x-1][y-1]=i;
  42. continue;
  43. }
  44. if(matriz[x-1][y+1]==0 && x-1>=0 && y+1<10)
  45. {
  46. matriz[x-1][y+1]=i;
  47. continue;
  48. }
  49. if(matriz[x+1][y]==0 && x+1<10)
  50. {
  51. matriz[x+1][y]=i;
  52. continue;
  53. }
  54. if(matriz[x+1][y-1]==0 && x+1<10 && y-1>=0)
  55. {
  56. matriz[x+1][y-1]=i;
  57. continue;
  58. }
  59. if(matriz[x+1][y+1]==0 && x+1<10 && y+1<10)
  60. {
  61. matriz[x+1][y+1]=i;
  62. continue;
  63. }
  64. i--;
  65. continue;
  66. }
  67.  
  68. }
  69.  
  70. for(i=0;i<10;i++)
  71. {
  72. putchar('\n');
  73. for(j=0;j<10;j++)
  74. printf("%i\t", matriz[i][j]);
  75. }
  76.  
  77. return 0;
  78. }
  79.  

Sa1uDoS
Páginas: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14 15 16
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines