/* 6(a) Calculate the value of Sin(X) for different values of X in degrees using the series :     Sin(X) = X - X3/3! + X5/5! + . . .

(a) to a given accuracy    (b) Using n terms    (c) Also print Sin(X) using library function  */

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<conio.h>
void main()
{
    int i,x,n,sign=1,ch,k=2,den=1;
    double xr,acc,sum=0.0,temp;
    clrscr();
    printf("\t\t\t\t\tSINE SERIES\n");
    printf("Input the value of x : ");
    scanf("%d",&x);
    if (x>=0)
    {
        printf("\n\nSelect any ONE option below : ");
        printf("\n1. To a given accuracy");
        printf("\n2. Upto `n' terms");
        printf("\n3. Using library function sin(x)");
        printf("\n0. Exit");
        printf("\n\nYOUR CHOICE = ");
        scanf("%d",&ch);
        xr=((float)x*3.14159)/180.0;
        switch(ch)
        {
            case 1:
                printf("\nEnter the Accuracy Value : ");
                scanf("%lf",&acc);
                temp=xr;
                for (i=1; fabs(sum-temp)>=acc; i+=2)
                {
                    temp=sum;
                    sum+=(pow(xr,i)/den)*sign;
                    sign*=-1;
                    den*=k*(k+1);
                    k+=2;
                }
                printf("\n\nSine Value of %d (Upto Accuracy = %lf) is %lf",x,acc,sum);
                break;

            case 2:
                printf("\nInput the value for n : ");
                scanf("%d",&n);
                for (i=1; i<=n; i+=2)
                {
                    sum+=(pow(xr,i)/den)*sign;
                    sign*=-1;
                    den*=k*(k+1);
                    k+=2;
                }
                printf("\n\nSine Value of %d is %lf (Upto n = %d)",x,sum,n);
                break;

            case 3:
                printf("\n\nSine Value of %d is %lf",x,sin(xr));
                break;

            case 0:
                printf("\nThank you for using.");
                break;        

            default:
                printf("\n!!!Invalid Choice Selection. Please Try Again");
        }
    }
    else printf("\n!!! Invalid Input Entry. Please Try Again");
    getch();
}