#include <stdio.h> #define PI 3.14 /* Item (a) */ float arctan(float x) { int k; float termo, soma, eps; eps = 0.0001; termo = x; soma = x; k = 1; while (termo*termo > eps*eps){ k = k+2; termo = -termo*x*x*(k-2)/k; soma = soma + termo; } return soma; } /* Item (b) */ /* Funcao extra: transforma angulo de radianos para graus */ float graus(float x) { return 180*x/PI; } float angulo(float x, float y) { float resp; if (x == 0 && y == 0) /* ERRO??? */ return -1; if (x >= y) if (x != 0) resp = graus(arctan(y/x)); else resp = 90; else if (y != 0) resp = graus(PI/2 - arctan(x/y)); else resp = 0; return resp; } int main() { int i, n; float x, y, xmin, ymin, angmin, ang; printf("Digite quantidade de pontos: "); scanf("%d", &n); angmin = 900; xmin = 0; ymin = 0; for (i = 0; i < n; i++){ printf("Digite as coordenados de um ponto: "); scanf("%f %f", &x, &y); ang = angulo(x,y); if (ang == -1) printf("Ponto na origem, sera' desconsiderado\n"); else if (ang < angmin){ angmin = ang; xmin = x; ymin = y; } } printf("O ponto de menor angulo: (%f,%f)\n", xmin, ymin); printf("Menor angulo: %f graus\n", angmin); return 0; }