Page 174

3.5 Paso de par´ametros Recuerda, pues, que dentro de una funci´on se accede a los campos de forma distinta seg´ un se pase un valor por copia o por referencia: 1. con el operador punto, como en traslacion.x, si la variable se ha pasado por valor; 2. con el operador ((flecha)), como en p->x, si la variable se ha pasado por referencia (equivalentemente, puedes usar la notaci´on (*p).x). Acabemos este apartado mostrando una rutina que pide al usuario que introduzca las coordenadas de un punto: 1 2 3 4 5 6

void lee_punto(struct Punto * p) { printf ("x: "); scanf ("%f", &p->x); printf ("y: "); scanf ("%f", &p->y); printf ("z: "); scanf ("%f", &p->z); }

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . · 189 Este ejercicio y los siguientes de este bloque tienen por objeto construir una serie de funciones que permitan efectuar transformaciones afines sobre puntos en el plano. Los puntos ser´an variables de tipo struct Punto, que definimos as´ı: 1 2 3

struct Punto { float x, y; };

Dise˜ na un procedimiento muestra_punto que muestre por pantalla un punto. Un punto p tal que p.x vale 2.0 y p.y vale 0.2 se mostrar´a en pantalla as´ı: (2.000000, 0.200000). El procedimiento muestra_punto recibir´ a un punto por valor. Dise˜ na a continuaci´ on un procedimiento que permita leer por teclado un punto. El procedimiento recibir´ a por referencia el punto en el que se almacenar´an los valores le´ıdos. · 190 La operaci´ on de traslaci´ on permite desplazar un punto de coordenadas (x, y) a (x+a, y+ b), siendo el desplazamiento (a, b) un vector (que representamos con otro punto). Implementa una funci´ on que reciba dos par´ ametros de tipo punto y modifique el primero de modo que se traslade lo que indique el vector. · 191 La operaci´ on de escalado transforma un punto (x, y) en otro (ax, ay), donde a es un factor de escala (real). Implementa una funci´on que escale un punto de acuerdo con el factor de escala a que se suministre como par´ametro (un float). · 192 Si rotamos un punto (x, y) una cantidad de θ radianes alrededor del origen, obtenemos el punto (x cos θ − y sin θ, x sin θ + y cos θ). Define una funci´ on que rote un punto la cantidad de grados que se especifique. · 193 La rotaci´ on de un punto (x, y) una cantidad de θ radianes alrededor de un punto (a, b) se puede efectuar con una traslaci´ on con el vector (−a, −b), una rotaci´on de θ radianes con respecto al origen y una nueva traslaci´on con el vector (a, b). Dise˜ na una funci´on que permita trasladar un punto un n´ umero dado de grados alrededor de otro punto. · 194 Dise˜ na una funci´ on que diga si dos puntos son iguales. · 195 Hemos definido un tipo registro para representar complejos as´ı: 1 2 3 4

struct Complejo { float real ; float imag; };

Dise˜ na e implementa los siguientes procedimientos para su manipulaci´on: leer un complejo de teclado; mostrar un complejo por pantalla; 168

Introducci´ on a la Programaci´ on con C

Profile for esLibre.com

Introducción a la programación con c  

Introducción a la programación con c  

Advertisement