
#include <iostream>
#include <cmath>
#include <iomanip>
#include <cstdlib>

using namespace std;

// Function Si(x)
double Si (double x){

 const double A0 = 2.5253303767;
 const double A1 = 1.0370462484;
 const double A2 = 0.5688888889;
 const double A3 = 0.3111070642;
 const double A4 = 0.1242940878; 
 const double t0 = 0.0469100770;
 const double t1 = 0.2307653450;
 const double t2 = 0.5000000000;
 const double t3 = 0.7692346550;
 const double t4 = 0.9530899230; 
 
double six;
six = ((A0*sin((x*t0)))+(A1*sin((x*t1)))+(A2*sin((x*t2)))+(A3*sin((x*t3)))+(A4*sin((x*t4))));
return six;
}
 
int main(void) {

double six, x, a, b, N;
double sixMax = 0;
double sixMin = 0;

cout << " Enter a, b and N (0 0 0 to exit)" << endl;
cin >> a >> b >> N;

while(a != 0 || b != 0 || N != 0){
	
	if(a>0 && b>a && N>=2){
		
		x = a;
		six = Si(x);
		cout << "x = " << x << ", Si(x) = " << six << endl;
		
		sixMax = six;
		sixMin = six;
		
		while(x<b){
			x = x + ((b-a)/(N-1));
			six = Si(x);
			if(x<b){
			cout << "x = " << x << ", Si(x) = " << six << endl;
		}// end if
		if(six>sixMax){
			sixMax = six;
		}else if(six<sixMin){
			sixMin = six;
		}//end if
		}// end while
		x = b;
		six = Si(x);
		cout << "x = " << x << ", Si(x) = " << six << endl;
		if(six>sixMax){
			sixMax = six;
		}else if(six<sixMin){
			sixMin = six;
		}//end if
		
		cout << "The largest value is " << sixMax << endl;
		cout << "The smallest value is " << sixMin << endl;
	
	}else{
		cout << "The values are unacceptable" << endl;
	}// end if
	
	cout << " Enter a, b and N (0 0 0 to exit)" << endl;
    cin >> a >> b >> N;
	
}// end while

	system("PAUSE"); return 0;
}
