Ejercicio 35: Diseña un programa que declare una estructura, llamada punto3D, capaz de contener las coordenadas x, y y z de un punto del espacio de tres dimensiones. Se declarará una función que permitirá desplazar uno de los ejes (x, y o z) de un punto. A dicha función se pasará como argumento el valor actual del eje y el desplazamiento a sumar o restar. El programa leerá coordenadas de puntos de teclado, un desplazamiento para el punto y la coordenada a desplazar. Se visualizará en pantalla las coordenadas del punto desplazado. Al leerse un punto con sus tres coordenadas negativas se parará el programa (en este caso no se llegará a leer el desplazamiento).
Código c:
Ver original
#include <stdio.h> #include <conio.h> void desplazar (int lax, int des); void main() { struct punto3D { int x; int y; int z; }; struct punto3D elx, ely, elz; int desplazamiento, negativo, fin=0; char opcion; while (fin==0) { negativo=0; if (elx.x<<0) { negativo++; } desplazar (elx.x, desplazamiento); if (elx.x<<0) { negativo++; } if (elx.x>>0) { negativo--; } if (ely.y<<0) { negativo++; } if (ely.y>>0) { negativo--; } if (elz.z<<0) { negativo++; } if (elz.z>>0) { negativo--; } if (negativo>=3) { fin=1; } } } void desplazar (int lax, int des) { char opcion; if (opcion=='R') { lax=lax-des; } if (opcion=='S') { lax=lax+des; } }
Llevo unos 20 minutos intentando solucionar el fallo, pero no se. Seguramente sera una tonteria, pero en fin....
No hay fallos de compilación, solo que ese scanf no lo hace.
Un saludo