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


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


  Mostrar Mensajes
Páginas: 1 ... 72 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 ... 235
861  Comunicaciones / Redes / Re: Con ping, sin internet. Ayuda! en: 29 Agosto 2016, 15:31 pm
A que direccion le haces ping

Recomiendo el DNS de Google

Código:
ping 8.8.8.8


Suena que tiene s problemas de Resolucion DNS prueba:
Código:
nslookup www.google.com
Te deberia de devolver la direccion IP DE GOOGLE
862  Foros Generales / Noticias / Re: «Youtubers», «bloggers» y el negocio de la publicidad engañosa en: 29 Agosto 2016, 15:17 pm
Si las personas no se dejaran influenciar tan fácilmente esta no seria noticias. Pero la culpa no es de nadie...

El sistema economico en donde vivimos obliga a las empresas a buscar vender mas.

Nuestra necesidad de OCIO nos lleva a comprar mas cosas que no necesitamos


Saludos.
863  Programación / Programación C/C++ / Optimizar evaluación de juego de TATETI en: 29 Agosto 2016, 14:56 pm
Siguiendo con el tema de :

[C] Duda TATETI

en ese tema puse un codigo para Generar un Arbol de N niveles apartir de una jugada inicial

Ahora toca evaluar todos los nodos (Juegos) para asi poder decidir el mejor movimiento

Dada las siguientes definiciones y estructuras:

Código
  1. #define UNKNOW 0 //Nobody win yet
  2. #define O_WIN 1
  3. #define X_WIN 2
  4. #define DRAW 3
  5. #define ERROR 4
  6.  
  7. struct tablero {
  8. uint8_t juego[3][3];
  9. };
  10.  

Hice esta funcion que evalua las 3 Filas , 3 Columnas y 2 Diagonales. Adicional evaluar si es empate, si todavia nadie gana y si existe alguna discrepancia en el tablero

La pregunta aqui es, ¿Existe una forma mas eficiente de hacer esto?

Me refiero a que se me hace bastante pesado evaluar todas las lineas xD..

NOTA: No he compilado el codigo por lo que puedw tener errores.

Código
  1. uint8_t estatus_juego(struct tablero *t) {
  2. uint8_t e;  //Estatus a devolver
  3. register uint8_t i = 0,j = 0;
  4. uint8_t contador_X,contador_O,casilla;
  5. bool continuar = true;
  6. //Procedemos a validar las 3 Lineas horizontales
  7. i = 0;
  8. while(continuar && i < 3) {
  9. j = 0;
  10. casilla = t->juego[i][j];
  11. j++;
  12. while(continuar && j < 3 && ) {
  13. if(casilla != t->juego[i][j] || !t->juego[i][j]) {
  14. continuar = false;
  15. }
  16. j++;
  17. }
  18. if(continuar){
  19. //si continuar sigue siendo true en este punto el jugador casilla Gana y ya no es necesario evaluar los otros casos
  20. continuar = false; // Establemos continuar como false para que ya no entre al ciclo siguiente
  21. }
  22. else {
  23. //En caso de que continuar sea false, significa que debemos seguir evaluando las lineas restantes
  24. continuar = true // Establemos continuar como true para que si entre al ciclo siguiente
  25. }
  26. i++;
  27. }
  28. if(continuar) {
  29. //Continuamos la evaluacion de las lineas Verticales
  30. i = 0;
  31. while(continuar && i < 3) {
  32. j = 0;
  33. casilla = t->juego[j][i];
  34. j++;
  35. while(continuar && j < 3) {
  36. if(casilla != t->juego[j][i] || !t->juego[j][i] ) {
  37. continuar = false;
  38. }
  39. j++;
  40. }
  41. if(continuar){
  42. //si continuar sigue siendo true en este punto el jugador casilla Gana y ya no es necesario evaluar los otros casos
  43. continuar = false; // Establemos continuar como false para que ya no entre al ciclo siguiente
  44. }
  45. else {
  46. //En caso de que continuar sea false, significa que debemos seguir evaluando las lineas restantes
  47. continuar = true // Establemos continuar como true para que si entre al ciclo siguiente
  48. }
  49. i++;
  50. }
  51. if(continuar) { //Evaluamos las lineas Diagonales
  52. casilla = t->juego[0][0];
  53. if(casilla == t->juego[1][1] && casilla == t->juego[2][2] && casilla != 0) {
  54. if(casilla == 'X') {
  55. e = X_WIN;
  56. }
  57. else {
  58. e = O_WIN;
  59. }
  60.  
  61. }
  62. else {
  63. casilla = t->juego[0][2];
  64. if(casilla == t->juego[1][1] && casilla == t->juego[2][0]  && casilla != 0) {
  65. if(casilla == 'X') {
  66. e = X_WIN;
  67. }
  68. else {
  69. e = O_WIN;
  70. }
  71. }
  72. else {
  73. //Todavia nadie gana o es empate en caso de que ya no queden casillas libres
  74. contador_X = 0;
  75. contador_O = 0;
  76. i = 0;
  77. while(i < 3) {
  78. j = 0;
  79. while(j < 3) {
  80. if(t->juego[i][j] == 'X') {
  81. contador_X++;
  82. }
  83. else {
  84. if(t->juego[i][j] == 'O') {
  85. contador_O++;
  86. }
  87. }
  88. j++;
  89. }
  90. i++;
  91. }
  92. if(abs(contador_O-contador_X) > 1) {
  93. //ERROR de Tablero, no es posible que un jugador tenga 2 o mas 'fichas' que el otro en el tablero
  94. e = ERROR;
  95. }
  96. else {
  97. if(contador_X+contador_O < 9) {
  98. e = UNKNOW;
  99. }
  100. else {
  101. e = DRAW;
  102. }
  103. }
  104. }
  105. }
  106. }
  107. else {
  108. //En este punto evaluamos quien gano
  109. if(casilla == 'X') {
  110. e = X_WIN;
  111. }
  112. else {
  113. e = O_WIN;
  114. }
  115. }
  116. }
  117. else {
  118. //En este punto evaluamos quien gano
  119. if(casilla == 'X') {
  120. e = X_WIN;
  121. }
  122. else {
  123. e = O_WIN;
  124. }
  125. }
  126. return e;
  127. }
  128.  

Saludos
864  Programación / Programación C/C++ / Re: (Consulta) Funcion FgetS en arreglo bidemensional en: 29 Agosto 2016, 14:09 pm
Hola todo bien con la respuesta de JavierScars

Solo me queda la duda del puts...
Segun yo solo deberia de ser:

Código
  1.    while (!feof(arch))
  2.    {
  3.        fgets(arreglo[i],20,arch);
  4.        i++;
  5.    }

palacio29 solo tienes que agregar el indice de la posicion del arreglo donde guardaras la entrada


Saludos
865  Programación / Programación C/C++ / Re: Tabla ASCII en C++ caracteres de control en: 28 Agosto 2016, 20:31 pm
Si tienes razon el 3 tiene una forma de corazon, aunque la salida es muy variada en cada sistema y version. Por ejemplo en un sistema FreeBSD no imprime nada pero si entro a determinadas consolas si se ve el coraxon.

Que sistema tienes y en donde lo estas ejecutando.

866  Programación / Programación C/C++ / Re: Como recorrer una matriz en forma de culebrita ? en: 28 Agosto 2016, 20:27 pm
No se le ve una forma tan obvia de recorrerlos.
Lo que mas se aproxima es poder porgramar un movimiento en diagonal y cada que llegue a alguno de los límites programar con suba o baje segun sea el caso.

El detalle es que los limetes crecen y decresen. Lo interesante seria programar ese movimiento para un arrar bidimensional de cualquier Altura y anchura...


Saludos
867  Programación / Programación C/C++ / Re: (Consulta) Porque no me funciona gets(string) en: 28 Agosto 2016, 20:22 pm
Recomiendo mejor el uso dw fgets para poder limitar la entrada y no causar un bufferoverflow:

Código
  1. fgets(cadena,limite,stdin);

Donde cadena es un char de longitud limite, limite nos limita la entrada de datos y stdin es la entrada estandar

Saludos
868  Programación / Programación C/C++ / Re: (Consulta) Duda sobre funcionamiento de la Funcion strcmp en: 27 Agosto 2016, 21:51 pm
Asi es.

Suponiendo que tenemos:

Código
  1. char *A = "ABC";
  2. char *B = "BBC";
  3. char *C = "CBC";
  4. printf("La funcion devolvio %i\n",strcmp(A,B));
  5. printf("La funcion devolvio %i\n",strcmp(C,B));
  6.  

devulve:

Código:
La funcion devolvio -1
La funcion devolvio 1

Y en ambos casos solo comparara la primera letra y se detiene ahi por que son diferentes.
como A< B devuelve -1 y como C> B devuelve 1

869  Programación / Programación C/C++ / Re: (Consulta) Duda sobre funcionamiento de la Funcion strcmp en: 27 Agosto 2016, 19:39 pm
Asi es el ASCII de cada letra compara posicion por posicion mientras sean iguales y con la primera diferencia devuelve -1 o +1 dependiendo si es menor o mayor el simbolo en cuestion.

Saludos
870  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: 27 Agosto 2016, 19:28 pm
Hola, los nokias siempre fueron un dolor de cabeza. Si no es AT&T no podre ayudarte, hay buenas paginas para liberarlo pero no son gratis el servicio puede variar entre 40 y 80 USD o mas.
Páginas: 1 ... 72 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 ... 235
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines