
Solução em C do Problema 4
#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;
}
História
da Computação | Listas de
Exercícios | Problemas Resolvidos | macmulti@ime.usp.br