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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Mensajes
Páginas: 1 ... 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 [88] 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 ... 235
871  Programación / Programación C/C++ / Re: [C++]Errores sin sentido en: 26 Agosto 2016, 17:15 pm
Código
  1. #include <iostream>
  2. int main(){
  3.  
  4. }
  5.  
  6.    int sumar(){ //Si no pongo ; entre medio de las llaves da error
  7.    int a=2+2
  8.    std::cout << a << endl; //Este endl me da error
  9.    return 0;
  10.    }
  11.  

Las funciones deben de estar fuera del main

Saludos!
872  Programación / Programación C/C++ / Re: [C] Duda TATETI en: 26 Agosto 2016, 16:46 pm
NO ESTA TERMINADO AUN

Pero este programa genera tantos Arboles como queramos con ayuda de una funcion recursiva "next_moves" y la profuncidad deceada.

Primero se inicializa el tablero inicial con un valor random y apartir de ahi genera las siguientes "Level" Jugadas rellenando un arbol para su posterior evaluacion del siguiente mejor movimiento dado el turno Actual (Esto aun No esta)

Salida del programa (Aleatoria primera Jugada):

Código:
Tablero Actual:
...
...
...
Turno de X
X Jugo:
...
...
X..
Creando Nodo nuevo de Arbol
O..
...
X..
Creando Nodo nuevo de Arbol
.O.
...
X..
Creando Nodo nuevo de Arbol
..O
...
X..
Creando Nodo nuevo de Arbol
...
O..
X..
Creando Nodo nuevo de Arbol
...
.O.
X..
Creando Nodo nuevo de Arbol
...
..O
X..
Creando Nodo nuevo de Arbol
...
...
XO.
Creando Nodo nuevo de Arbol
...
...
X.O

Codigo (Espoiler EXCESO DE APUNTADORES Y MEMORIA DINAMICA)

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #include<time.h>
  5. #include<stdbool.h>
  6.  
  7. struct tablero {
  8. char juego[3][3];
  9. };
  10.  
  11. struct nodo {
  12. struct tablero *data;
  13. int total;
  14. struct nodo **aristas;
  15. };
  16.  
  17. struct move {
  18. char x,y;
  19. };
  20.  
  21. char *jugadores = "OX"; //0 = O , 1 = X
  22. void imprimir_tablero(struct tablero *t);
  23.  
  24. struct tablero *tablero_nuevo();
  25.  
  26. struct nodo *nuevo_nodo();
  27. struct nodo* create_nodo_from(struct tablero *t);
  28.  
  29. void next_moves(struct nodo *n,int turno,int level);
  30. struct move *best(struct tablero *actual,int turno,int level);
  31.  
  32. int main() {
  33. bool end = false;
  34. char x,y;
  35. struct tablero *inicial = NULL;
  36. srand(time(NULL));
  37. int turno = rand() % 2;
  38. inicial = tablero_nuevo();
  39. while(!end) {
  40. printf("Tablero Actual:\n");
  41. imprimir_tablero(inicial);
  42. printf("Turno de %c\n",jugadores[turno%2]);
  43. x = rand() % 3;
  44. y = rand() % 3;
  45. inicial->juego[x][y] = jugadores[turno%2];
  46. printf("%c Jugo:\n",jugadores[turno%2]);
  47. imprimir_tablero(inicial);
  48. //if(turno == 8) {
  49.  
  50.  
  51. end  = true;
  52. //}
  53. turno++;
  54. best(inicial,turno,1); //El nivel 1 es solo la siguiente jugada, a mas profundidad del arbol mas tarda, pero mas "dificilta" representa la computadora
  55. }
  56. return 0;
  57. }
  58.  
  59. struct move *best(struct tablero *actual,int turno,int level) {
  60. struct move *m = malloc(sizeof(struct move));
  61. struct nodo *raiz,*pivote,*aux;
  62. int i = 0;
  63. raiz = nuevo_nodo();
  64. raiz->data = malloc(sizeof(struct tablero));
  65. memcpy(raiz->data,actual,sizeof(struct tablero));
  66. next_moves(raiz,turno,level);
  67. return m;
  68. }
  69.  
  70. void next_moves(struct nodo *n,int turno,int level) {
  71. int i,j;
  72. struct nodo *temp = NULL;
  73. if(n) {
  74. i = 0;
  75. while(i < 3) {
  76. j =0;
  77. while(j < 3) {
  78. if(n->data->juego[i][j] == 0) {
  79. n->aristas = realloc(n->aristas,sizeof(struct nodo*)*n->total+1);
  80. n->aristas[n->total] = create_nodo_from(n->data);
  81. n->aristas[n->total]->data->juego[i][j] = jugadores[turno%2];
  82. if(level > 0) {
  83. next_moves(n->aristas[n->total],turno+1,level-1);
  84. printf("Creando Nodo nuevo de Arbol\n");
  85. imprimir_tablero(n->aristas[n->total]->data);
  86. }
  87. n->total++;
  88. }
  89. j++;
  90. }
  91. i++;
  92. }
  93. }
  94. }
  95.  
  96. struct nodo* create_nodo_from(struct tablero *t) {
  97. struct nodo *temp = nuevo_nodo();
  98. temp->data = tablero_nuevo();
  99. memcpy(temp->data,t,sizeof(struct tablero));
  100. return temp;
  101. }
  102.  
  103. struct nodo *nuevo_nodo() {
  104. struct nodo *n = calloc(1,sizeof(struct nodo));
  105. return n;
  106. }
  107.  
  108. struct tablero *tablero_nuevo() {
  109. struct tablero *temp = calloc(1,sizeof(struct tablero));
  110. return temp;
  111. }
  112.  
  113. void imprimir_tablero(struct tablero *t) {
  114. char i,j;
  115. if(t) {
  116. i = 0;
  117. while(i < 3) {
  118. j = 0;
  119. while(j < 3) {
  120. if(t->juego[i][j]) {
  121. printf("%c",t->juego[i][j]);
  122. }
  123. else {
  124. printf(".");
  125. }
  126. j++;
  127. }
  128. printf("\n");
  129. i++;
  130. }
  131. }
  132. }

La base para ver MAS jugadas esta en el tercer parametro de la funcion best, el cual si quertemos un arbol de mas profundidad cambiamos el 1 por 2 o 3 o X.... segun el nivel que queramos

Código
  1. best(inicial,turno,1);

Saludos!
873  Programación / Programación C/C++ / Re: Tutorial de archivos en lenguaje C. - en: 26 Agosto 2016, 16:41 pm
Tienes toda la razon mi estimado :)  ;-)
874  Programación / Programación C/C++ / Re: Tutorial de archivos en lenguaje C. - en: 26 Agosto 2016, 16:15 pm
Una buena idea para depurar el código y encontrar el error seria imprimir las direcciones y/o valores de las variables por ejemplo en tu caso:

Código
  1. fprintf("%p\n",recordatorio);

Si ya sabemos que el error esta en X linea ponemos el printf justo antes del error

Eso  os imprime la dirección a la cual esta apuntado, y si vemos que son puros 000000 sabremos que no lo hemos inicializado.

Saludos!
875  Programación / Programación C/C++ / Re: Ayuda do-while en: 26 Agosto 2016, 14:57 pm
Tal vez tiene un

Código
  1. system("pause");

Saludos
876  Programación / Programación C/C++ / Re: Problema de Burbujeo en una Matriz! en: 26 Agosto 2016, 14:55 pm
El codigo que muestras es para ordenar enteros haybque modificarlo para comprar Cadenas podrias ordenarlos usando strcmp.

Te recomiendo que leas primero de algoritmos de ordenamiento.

Burbuja
QuickSort
etc

Y veas primero como ordenarlos en Papel para luego escribie el codigo correcto
877  Comunicaciones / Dispositivos Móviles (PDA's, Smartphones, Tablets) / Re: Contribución Gratis al Foro - Ayudo liberando iPhone's o Nokias de AT&T EEUU en: 26 Agosto 2016, 14:45 pm
Hola...seta q m puedes ayudar a liberar mi Nokia 5230 -1b
Rm.594
Imei.358018038065363
Gracias...

Ese IMEI no es AT&T

No tr podre ayudar con el.

Saludos
878  Programación / Programación C/C++ / Re: Maximo de datos en: 26 Agosto 2016, 01:43 am
Cabe cualquier cantidad de datos que reserves en el.

En teoria solo esta limitado por la RAM existente.

Intenta:

Código
  1. char *buffer = malloc(1024*1024*1024); // Un Gigabyte de Memoria reservada para el buffer
  2.  

Saludos
879  Programación / Programación C/C++ / Re: [C] TA-TE-TI tridimensional en: 26 Agosto 2016, 01:28 am
Pues es lo mismo que en 2 dimenciones las mismas reglas aplican gana quien logre 3 figuras continuas.

Basicamente necesitas una matriz de 3*3*3

Código
  1. char tablero[3][3][3];

Y empezar a llenar y evaluar si un jugador a ganado o no. En caso contrario continuar con el juego.

El punto es que son mas evaluaciones pero hasta ahi.

Saludos
880  Programación / Desarrollo Web / Acceso asincrono a Variables en: 25 Agosto 2016, 20:20 pm
Hola que tal estoy programando una pequeña interfaz y me encuentro con el siguiente problema:

Tengo una varible Array en javascript:

Código
  1. var sucursales = new Array;

Dicha variable se actualiza en tiempo de ejecución mediante la siguiente función:

Código
  1. function lista_sucursal() {
  2. $.ajax({
  3. url: '/get_sucursales.aspx',
  4. type: 'POST',
  5. success: function(data) {
  6. var r = JSON.parse(data);
  7. if(r.ok == true) {
  8. var i = 0;
  9. while (i < r.data.length) {
  10.    sucursales[r.data[i].id] = r.data[i].nombre;
  11.    //Mas codigo irrelevante aqui
  12. i++;
  13. }
  14. }
  15. else {
  16. //Error aqui
  17. }
  18. }
  19. });
  20. }

Dicha funcion se llama al momento de cargar la pagina primero que otras funciones...

Posteriormente tengo otro parte del codigo que hace mas o menos esto:

Código
  1. function maquinas_sucursales_tabla() {
  2. $("#tabla_body").html("");
  3. $.ajax({
  4. url: '/get_maquinas_sucursales.aspx',
  5. type: 'POST',
  6. success: function(data) {
  7. var r = JSON.parse(data);
  8. if(r.ok == true) {
  9. var i = 0;
  10. while(i < r.data.length) {
  11.    $("#tabla_body").append('<tr><td>' + sucursales[r.data[i].sucursal] + '</td></tr>');
  12. i++;
  13. }
  14. }
  15. else {
  16. //ERROR
  17. }
  18. }
  19. });
  20. }

El detalle esta en que hay veces que pone el dato correctamente y otras veces aparece "undefined" y esto es debido a que el codigo del jquery se ejecuta de forma asincrona...

Que recomiendan para solucionar esto, estaba pensando en usar un semaforo como "sucursales_ready" para solo cargar los otros datos cuando la variable ya este lista....

Pero no se, tal vez existe otro metodo mas rapido y/o sencillo.


Saludos!
Páginas: 1 ... 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 [88] 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 ... 235
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines