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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ... 122
141  Programación / Programación C/C++ / Re: (Aporte) Una pregunta trampa que me hizo mucha gracia en: 23 Junio 2016, 16:13 pm
Más que una pregunta trampa es un error clásico y difícil de detectar. Supongo que aquí todos nos hemos vuelto locos buscando la causa del mal funcionamiento de algún programa y hemos perdido una buena cantidad de nuestro tiempo hasta darnos cuenta de ese punto y coma que se nos ha escapado después de un for/if/while.
142  Programación / Programación C/C++ / Re: Tipo de dato bool en: 18 Junio 2016, 16:00 pm
¡Buenas!

En C, por lo que siempre he leído, cero/NULL es falso y cualquier valor distinto de cero/NULL verdadero. Suficiente para funcionar y muy útil para devolver, por ejemplo, valores de diagnostico de funcionamiento desde funciones, ya que no es lo mismo decir si una función se ha ejecutado de forma correcta o incorrecta que decir que no se ha podido asignar memoria, que se ha intentado acceder a posiciones de memoria incorrectas o que se ha intentado calcular el logaritmo de un número negativo. Así, por ejemplo, una función puede devolver un entero formado por banderas que sea cero si todo ha ido bien o que active distintos bits según se hayan encontrado errores y así poder tomar decisiones desde la función llamadora. Con un simple if(valor=funcion(...)) ya puedes empezar a discriminar casos.

Otro caso muy útil es cuando una comparación en lugar de decirte si dos elementos son iguales o distintos te da el orden, según algún tipo de criterio de ordenación, del primero con respecto al segundo (<0 si el primero es menor, == 0 si son iguales o > 0 si el primero es mayor). No hay nada menos expresivo que un valor booleano, o si o no, sin valores intermedios ni ningún tipo información extra...

¡Saludos!
143  Programación / Programación C/C++ / Re: Necesito tu ayuda, debo detectar un jaque en c++ en: 17 Junio 2016, 21:43 pm
¡Buenas!

Ahora he visto algo más. Ni con el rey ni con los peones ni con el caballo compruebas que las coordenadas a las que accedes sean correctas, así que en los bordes accedes a posiciones de memoria que están fuera de la matriz y te dará errores de segmentación.

Antes de acceder a los datos tendrás que comprobar que las coordenadas estén dentro del rango 0-7.

¡Saludos!
144  Programación / Programación C/C++ / Re: Necesito tu ayuda, debo detectar un jaque en c++ en: 17 Junio 2016, 17:18 pm
Parece que tu código es correcto, pero está incompleto.

Te falta comprobar si un rey amenaza a otro rey (en cuyo caso se amenazan mutuamente). Recuerda que según el enunciado simplemente se colocan piezas en el tablero, sin que éstas tengan que seguir las reglas del ajedrez.

Prueba a incluir ese caso y si aun así fallase muéstranos el tablero para el que el código no funcione.

¡Saludos!
145  Programación / Programación C/C++ / Re: Necesito tu ayuda, debo detectar un jaque en c++ en: 17 Junio 2016, 14:42 pm
Si no utilizas las etiquetas GeSHI (el desplegable que hay al final de la primera fila de iconos en el modo de edición) para el código es imposible descifrar lo que has puesto...
146  Programación / Programación C/C++ / Re: Problema con programa c para binario en decimales en: 12 Junio 2016, 18:44 pm
¡Buenas!

Por lo que cuentas, en la parte decimal tienes dos problemas, extraer los decimales y decidir si hay un periodo. La primera parte es fácil, después de multiplicar por dos la parte decimal solo tienes que quedarte con la parte entera y restársela al número que has obtenido al multiplicar por dos antes de volver a iterar. Lo de decidir si es periódico o no... en base diez y sobre papel es fácil XD, pero realizando los cálculos con ordenador y teniendo en cuenta que tienes que convertirlo a base dos... busca en algún libro de matemática discreta o de teoría de números. Date cuenta de que no solo existen números con un número finito de decimales o con un periodo, sino que también tienes números irracionales con una cantidad infinita de decimales sin ningún tipo de patrón periódico.
147  Sistemas Operativos / GNU/Linux / Re: Por qué deberías abandonar Windows 10 e instalar Ubuntu 16.04 en: 9 Junio 2016, 18:56 pm
Entonces a ver si lo entiendo... debo de formatear y abandonar W10 porque según ellos me ahorraré unos segundos en el arranque.

¿Es eso?, porque me temo que si es su mejor argumento, no puedo plasmar lo que pienso de semejantes sesudos analistas sin recurrir a palabras gruesas y comparaciones poco agraciadas con algunos miembros de la familia de los equinos conocidos por sus grandes apéndices auditivos

+1
148  Sistemas Operativos / GNU/Linux / Re: Por qué deberías abandonar Windows 10 e instalar Ubuntu 16.04 en: 8 Junio 2016, 05:18 am
Yo tengo win10 sobre ssd y mi BIOS es eso osea BIOS y no uefi, y el tiempo de arranque de dicho windows 10 desde que sale del gestor de arranque hasta que termina de cargar son 10 segundos.
Por otro lado en las mismas condiciones (es el mismo ordenador y el mismo disco duro particionado a la mitad de modo que el win10 tiene para si 120 GB y el kubuntu otros 120 GB) el kubuntu tarda 28 segundos.
Eso no quita para que yo en su mayor parte del tiempo prefiero usar kubuntu, pero las cosas como son, y lo que son es que el win10 arranca mucho antes que kubuntu en igualdad de condiciones.
Saludos...

Songoku


Pues no se como tiene de cuidado o descuidado Windows mi colega. Tampoco se si a KDE le cuesta arrancar más que a XFCE, pero juraría que XUbuntu le arranca más rápido que Windows, ya lo cronometraré.

¡Saludos!
149  Sistemas Operativos / GNU/Linux / Re: Por qué deberías abandonar Windows 10 e instalar Ubuntu 16.04 en: 6 Junio 2016, 13:21 pm
Muy facil, para utilizar una distro GNU/Linux Fast Boot tiene que estar desactivado, así que en esta igualdad de condiciones, las distros suelen arrancar a la velocidad del rayo, mientras que Windows 10, sin el truco del fast boot, va más lento que el caballo del malo. Lo he comprobado incluso en equipos con doble disco duro y Windows 10 instalado en un SSD y XUbuntu 16.04 en un HDD de toda la vida.
150  Programación / Programación C/C++ / Re: Problema con recursividad y buscaminas. en: 5 Junio 2016, 23:49 pm
¡Buenas!

No he leído el código completo porque como no lo he escrito yo me parecía un coñazo, pero el algoritmo que buscas sería el siguiente:

Código:
void despejar(int fila, int columna, tabla)
{
    si(coordenadas_correctas(fila,columna))
    {
        si(condicion para despejar tabla[i,j])
        {
            marcar tabla[fila,columna] como despejada;
            //dejamos la casilla marcada para no entrar en una recursion infinita

            despejar(fila - 1 , columna); //arriba
            despejar(fila + 1 , columna); //abajo
            despejar(fila , columna + 1); //derecha
            despejar(fila , columna - 1); //izquierda
        }
        //sino no se dan las condiciones para seguir y volvemos
        return;
    }

    //sino las coordenadas no son correctas
    return;
}

¡Saludos!

Te dejo un código que, aunque no hace lo que pides, maneja el mismo concepto. La función que te interesa empieza en la línea 18:
Código
  1. #include <stdio.h>
  2.  
  3. #define FILAS 21
  4.  
  5. void mostrar_tabla(char tabla[][FILAS + 1], int filas)
  6. {
  7.    int i;
  8.  
  9.    for(i = 0 ; i < filas ; i++)
  10.        printf("%s\n",tabla[i]);
  11. }
  12.  
  13. int coordenadas_correctas(int fila, int columna)
  14. {
  15.    return fila>= 0 && columna >= 0 && fila < FILAS && columna < FILAS;
  16. }
  17.  
  18. void rellenar(char tabla[][FILAS + 1], int fila, int columna, char relleno)
  19. {
  20.    char caracter_actual;
  21.  
  22.    //nos aseguramos de que en la primera llamada estamos dentro de la tabla
  23.    if(coordenadas_correctas(fila,columna))
  24.    {
  25.        //guardamos el caracter que hay en la posicion dada antes de sobreescribirlo con el de relleno
  26.        caracter_actual = tabla[fila][columna];
  27.        tabla[fila][columna] = relleno;
  28.  
  29.        //si las coordenadas hacia arriba son correctas y el caracter es el mismo que el actual
  30.        if(coordenadas_correctas(fila - 1,columna) && tabla[fila - 1][columna] == caracter_actual)
  31.            rellenar(tabla, fila - 1, columna, relleno); //rellenamos
  32.  
  33.        //...
  34.        if(coordenadas_correctas(fila + 1,columna) && tabla[fila + 1][columna] == caracter_actual)
  35.            rellenar(tabla, fila + 1, columna, relleno);
  36.  
  37.        if(coordenadas_correctas(fila, columna + 1) && tabla[fila][columna + 1] == caracter_actual)
  38.            rellenar(tabla, fila, columna + 1, relleno);
  39.  
  40.        if(coordenadas_correctas(fila, columna - 1) && tabla[fila][columna - 1] == caracter_actual)
  41.            rellenar(tabla, fila, columna - 1, relleno);
  42.    }
  43.  
  44.    return;
  45. }
  46.  
  47. int main(int argc, char *argv[])
  48. {
  49.    char tabla[FILAS][FILAS + 1];
  50.    int i,j;
  51.  
  52.    //rellenamos la tabla con oes
  53.    for(i = 0 ; i < FILAS ; i++)
  54.    {
  55.        for(j = 0 ; j < FILAS ; j++)
  56.            tabla[i][j] = 'o';
  57.  
  58.        tabla[i][j] = '\0';
  59.    }
  60.  
  61.    //hacemos una cruz con cruces
  62.    for(i = 0 ; i < FILAS ; i++)
  63.        tabla[FILAS / 2][i] = tabla[i][FILAS / 2] = '+';
  64.  
  65.    mostrar_tabla(tabla,FILAS);
  66.  
  67.    printf("Pulsar intro para continuar...");
  68.    while(getchar() != '\n');
  69.  
  70.    //dibujamos rayas hacia el origen en cada cuadrante
  71.    rellenar(tabla, FILAS / 4, FILAS / 4, '\\'); //segundo cuadrante
  72.    rellenar(tabla, 3 * FILAS / 4, FILAS / 4, '/'); //tercer cuadrante
  73.    rellenar(tabla, FILAS / 4, 3 * FILAS / 4, '/'); //primer cuadrante
  74.    rellenar(tabla, 3 * FILAS / 4, 3 * FILAS / 4, '\\'); //cuarto cuadrante
  75.  
  76.    mostrar_tabla(tabla,FILAS);
  77.  
  78.    printf("Pulsar intro para continuar...");
  79.    while(getchar() != '\n');
  80.  
  81.    return 0;
  82. }
  83.  
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ... 122
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines