Un programador con poca experiencia nos manda la
siguiente función que dice que intercambia el valor de sus dos
parámetros. Si se llama como swap(x, y)
, al terminar la
ejecución, las variables x
e y
han
intercambiado sus valores. ¿Es eso cierto? Comprueba tu respuesta
creando un programa en tu entorno de desarrollo y ejecutándolo. Puedes
imprimir la variable entera x
con la línea
printf("%d\n", x);
.
1 2 3 4 5 6 7 8 | void swap(int a, int b) { int tmp; tmp = a; a = b; b = tmp; return; } |
De nuevo este mismo programador nos manda una segunda función que dada una tabla de números enteros incrementa en uno cada uno de sus elementos. ¿Crees que esta función hace realmente esto? (Pista: la definición de la función es correcta, no tiene error alguno de sintaxis).
1 2 3 4 5 6 7 8 | void increase(int table[], int size) { int i; for (i = 0; i < size; i++) { table[i]++; } } |
Una aplicación manipula datos obtenidos de un sistema de posicionamiento global a través de la siguiente estructura:
1 2 3 4 5 6 7 | struct gps_information { int is_3D; float latitude; float longitude; float height; }; |
Escribe el prototipo de una función que recibe dos
estructuras de este tipo y un float
. La función devuelve un
entero con valor 1 si latitud y longitud de ambas estructuras están
separadas por no más del valor del tercer parámetro y cero en caso
contrario. Debes utilizar el sinónimo de tipo de datos que se
define.
Escribe la función con su definición completa (quizás te
sea de ayuda la función de librería fabsf
).
Escribe una función que recibe como parámetros dos
tablas de estructuras como las del ejercicio anterior, un entero con su
longitud (que es la misma para ambas), y un float
. La
función procesa las dos tablas a la vez (primero con primero, segundo
con segundo, etc.) y devuelve el índice del primer par de elementos que
están cerca tal y como se calcula con la función del apartado anterior
utilizando el último parámetro como distancia. Si la condición no se
cumple para ningún par de elementos, devuelve el valor -1.
Esta función que has implementado es la que se necesita en la aplicación, y no la anterior, que es una función auxiliar y de ámbito reducido. ¿Qué cambio harías en la definición del ejercicio anterior?