-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.c
135 lines (96 loc) · 2.5 KB
/
main.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/*******************************************************
* João Gaspar 23 março 2021
*
* Cálculo das funções trignométricas elementares pelas
* séries de Taylor
*******************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <math.h> /* Biblioteca com funções matemátcas - no presente caso utiliza-se para estudar resultados da função seno, cosseno e tangente */
/***** Protótipos de funções *****/
void factorial(int i, float * fact);
void potencia(float x, int i, float * pot);
float seno(int n, float x);
float cosseno(int n, float x);
float tangente(int n, float x);
/****** Main ******/
int main(){
int n;
float x;
printf("Introduza um angulo (x): ");
scanf("%f", &x);
printf("Numero de termos para calcular a serie (n): ");
scanf("%d", &n);
printf("\nsen(%.4f, %d) = %.2f", x, n, seno(n, x));
printf("\n\ncos(%.4f, %d) = %.2f", x, n, cosseno(n, x));
printf("\n\ntg(%.4f, %d) = %.2f\n", x, n, tangente(n, x));
return 0;
}
/****** Função para a tangente ******/
float tangente(int n, float x){
int i;
float fact = 1.0;
float pot = 1.0;
float sinal = -1.0;
float valor = 0.0;
for(i=0; n>0; n--, i=i+2){
potencia(x, i, &pot);
sinal = -sinal;
valor = valor + sinal * (pot / i);
}
return valor;
}
/****** Função para o cosseno ******/
float cosseno(int n, float x){
int i;
float fact = 1.0;
float pot = 1.0;
float sinal = -1.0;
float valor = 0.0;
for(i=0; n>0; n--, i=i+2){
factorial(i, &fact);
potencia(x, i, &pot);
sinal = -sinal;
valor = valor + sinal * (pot / fact);
}
return valor;
}
/****** Função para o seno ******/
float seno(int n, float x){
int i;
float fact = 1.0;
float pot = 1.0;
float sinal = -1.0;
float valor = 0.0;
for(i=1; n>0; n--, i=i+2){
factorial(i, &fact);
potencia(x, i, &pot);
sinal = -sinal;
valor = valor + sinal * (pot / fact);
}
return valor;
}
/****** fatorial de i ******/
void factorial(int i, float * fact){
*fact = 1;
if(i==0){
*fact = 1;
return;
}
while(i > 0){
*fact = *fact * i;
i--;
}
}
/****** potencia de x elevado a i ******/
void potencia(float x, int i, float * pot){
*pot = 1;
if(i==0){
*pot = 1;
return;
}
while(i>0){
*pot = *pot * x;
i--;
}
}