#include <stdio.h>
#include <math.h>

float fact(int n)
{
      float risultato;
      risultato = 1;
      while (n > 1) {
            risultato = risultato * n;
            n--;
      }
      return risultato;
}

float tsin(float x, int k)
{
      int n;
      float risultato = 0;
      for (n = 0; n <= k; n++) {
          if ( (n % 2) == 0)
             risultato = risultato + pow(x,2*n+1)/fact(2*n+1);
          else
             risultato = risultato - pow(x,2*n+1)/fact(2*n+1);
      }
      return risultato;
}

float sinc(float x, int k)
{
      if (x == 0)
         return 1;
      else
          return tsin(x,k)/x;
}

float integrale(float a, float b,int num_intervalli, int k)
{
      int i;
      float h, risultato;
      h = (b - a) / num_intervalli;
      risultato = 0;
      for (i = 1;i <= num_intervalli-1; i++) {
          risultato = risultato + sinc(a+i*h,k);
      }
      return (h/2)*(sinc(a,k) + sinc(b,k) + 2*risultato);
}

main()
{
      int k, n_interv;
      float a, b;
      printf("Inserisci il termine di approssimazione:");
      scanf("%d", &k);
      
      printf("Inserisci l'estermo a:");
      scanf("%f", &a);
      printf("Inserisci l'estermo b:");
      scanf("%f", &b);

      printf("Inserisci il numero di intervalli:");
      scanf("%d", &n_interv);
      
      printf("Il valore dell'integrale e' %f\n",
                 integrale(a, b, n_interv, k));
      system("pause");
}
