Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include<math.h>
- #define PI 3.141592
- double hatvany(double szam, int hanyadikra) {
- double seged = 1;
- for (int i = 0; i < (hanyadikra); i++) {
- seged = (double) (seged * szam);
- }
- return seged;
- }
- int fakt(int szam) {
- int seged = 1;
- for (int i = 0; i < szam; i++) {
- seged = seged * (i + 1);
- }
- return seged;
- }
- double szinusz(double szog, double epsilon) {
- while (szog >= 180) {
- szog = szog - 180;
- }
- while (szog <= -180) {
- szog = szog + 180;
- }
- if(szog > 90){
- szog = szog - 2*(szog - 90);
- }
- if(szog < -90){
- szog = szog - 2*(szog + 90);
- }
- double seged = szog / 360 * PI * 2;
- int i = 0;
- double szamlalo;
- double nevezo;
- double osszeg = 0;
- double szin = 0;
- double hasonlito;
- int elojel;
- do {
- elojel = hatvany(-1, (i));
- szamlalo = hatvany(seged, (2 * i + 1));
- nevezo = fakt(2 * i + 1);
- osszeg = elojel * szamlalo / nevezo;
- hasonlito = osszeg;
- szin = szin + osszeg;
- i++;
- } while (((osszeg > epsilon) || (-osszeg > epsilon))
- && (((osszeg - hasonlito) > epsilon)
- || ((osszeg - hasonlito) < epsilon)));
- return szin;
- }
- int main() {
- float fok;
- float pont,pam;
- scanf("%f %f",&fok,&pont);
- pam = szinusz(fok, pont);
- printf("PAM: %f\n",pam);
- printf("Rendes: %f\n",sin(fok*PI/180));
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement