Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - MAFUS

#61
Se me ocurre un árbol binario con dos datos:
Un entero que representa el ID del animal.
Un campo de bits de dos bits (o un entero que representa banderas) indicando si nadó en el primer mar y en el segundo.

Funciona así:

Cuando recibes el ID de un animal primero miras si está en el árbol. Si no está lo añades: a la rama de la izquierda si el número es menor al del nodo y a la derecha si el número es mayor al del nodo. Si no conoces el algoritmo hay muchos ejemplos en internet.
Ahora indicar en que mar a ha nadado usando el cambo de bits (o las banderas).

Una vez que has consumido todas las entradas vuelves a recorrer el árbol informando únicamente de los nodos que tienen han tienen los dos campos de bits activos (o un 3 si has usado un entero para banderas).
#62
Para mí que no encuentra el resto de archivos de la librería. ¿Tal vez te falta definirlo en los parámetros de compilación?
#63
Acuérdate del valor máximo que pueden tener las variables escalares: 2,147,483,647 es el valor máximo para un entero con signo de 32 bits.
#64
Seguramente capturas el '\n' de la tecla INTRO. Hay mucha documentación sobre esto, tanto en el foro como en la internet.
#65
¿Suma de dos matrices? En un mes tienes más que de sobra para hacer esta tarea.

Por cierto, en este foro no se hacen tareas. Estos mensajes son cerrados inmediatamente por los moderadores en cuanto los ven.

Te aconsejo que intentes resolverlo por tu mismo y si tienes alguna duda puntual regreses al foro para realizar esa pregunta en específico.
#66
Te pediría que explicaras cómo lo has resuelto. Así si alguien busca la misma información y encuentra este hilo sabrá como solventarlo.
#67
Con malloc tienes que hacer un cast al tipo de puntero, no a la estructura. Por ejemplo:

int *i = (int*) malloc(sizeof(int));


Pero si estás usando un compilador de C, a diferencia de uno de C++, éste es capaz de inferir el tipo de dato que debe castear. Por tanto es mejor si quitas el cast. Así:

int *i = malloc(sizeof(int));
[code]

Pero si estás programando en C con un compilador de C++ sí deberás hacer el cast.
[/code]
#68
Programación C/C++ / Re: Entendiendo una función
26 Diciembre 2019, 02:57 AM
Las funciones, al igual que las variables, deben ser conocidas por el compilador antes de ser usadas. Al igual que las variables, una función puede ser declarada en cualquier sitio: locales o globales. En este caso swap es local, es decir, sólo será vista dentro de qsort. Pero recordar que la definición de la función debe existir en otro lugar y el enlazador debe saber dónde encontrarla, es decir, lo único que cambia es que en vez de haber declarado la función global o por archivo de cabecera lo ha hecho local de otra función.
#69
Sí, parece que el postincremento genera más instrucciones.

Según https://godbolt.org que trabaja con gcc, si no se dan optimizaciones tenemos que el siguiente código int main() {
    int a = 0;
    int b = 0;
    int m = ++a;
    int n = b++;
}


se traduce a
Código (asm) [Seleccionar]
main:
        ; prepara el stack para la función
        push    rbp
        mov     rbp, rsp
        ; int a = 0;
        mov     DWORD PTR [rbp-4], 0
        ; int b = 0;
        mov     DWORD PTR [rbp-8], 0
        ; int m = ++a;
        add     DWORD PTR [rbp-4], 1
        mov     eax, DWORD PTR [rbp-4]
        mov     DWORD PTR [rbp-12], eax
        ; int n = ++b;
        mov     eax, DWORD PTR [rbp-8]
        lea     edx, [rax+1]
        mov     DWORD PTR [rbp-8], edx
        mov     DWORD PTR [rbp-16], eax
        ; código para regresar de la función
        mov     eax, 0
        pop     rbp
        ret


Cómo se puede ver con el postincremento hay una instrucción de más.
#70
Pues sigo sin entenderlo.