1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- /* rect_pol.c -- converts rectangular coordinates to polar */
- #include <stdio.h>
- #include <math.h>
- #define RAD_TO_DEG (180/(4 * atan(1)))
- typedef struct polar_v {
- double magnitude;
- double angle;
- } Polar_V;
- typedef struct rect_v {
- double x;
- double y;
- } Rect_V;
- Polar_V rect_to_polar(Rect_V);
- int main(void)
- {
- Rect_V input;
- Polar_V result;
-
- puts("Enter x and y coordinates; enter q to quit:");
- while (scanf("%lf %lf", &input.x, &input.y) == 2)
- {
- result = rect_to_polar(input);
- printf("magnitude = %0.2f, angle = %0.2f\n",
- result.magnitude, result.angle);
- }
- puts("Bye.");
-
- return 0;
- }
- Polar_V rect_to_polar(Rect_V rv)
- {
- Polar_V pv;
-
- pv.magnitude = sqrt(rv.x * rv.x + rv.y * rv.y);
- if (pv.magnitude == 0)
- pv.angle = 0.0;
- else
- pv.angle = RAD_TO_DEG * atan2(rv.y, rv.x);
-
- return pv;
- }
|