public class a42 { //Schleifen: Sinusberechnung
	public static void main (String []a){
		System.out.println("Berechnung des Sinus\n");
		do{
			double x=Mylib.zahlLesen("Bitte Winkel >0 und <Pi im Bogenmass eingeben");
			int n=Mylib.ganzeZahlLesen("Bitte Anzahl der Iterationen eingeben");
			System.out.println("\nErgebnis="+sinus(x, n));
			System.out.println("\nVergleichsergebnis von 'Math.sin(x)': "+Math.sin(x));
						
		}while (Mylib.jaNein("\nNochmal?"));
	
	}
	static double sinus(double x, int n){
			int counter;
			double ergebnis=0.0;
			for (counter=0;counter<=n;counter++){
			ergebnis=ergebnis+sinusterm(x, counter);
			}
		return ergebnis;
		}
		
	static double sinusterm(double x, int i){
		double termergebnis=Math.pow(-1.0,i)*(Math.pow(x,2.0*i+1.0)/sFakultaet(2*i+1));
		return termergebnis;
	}
	
	static double sFakultaet (int zahl){
		if (zahl>0){
			if (zahl<=1) return 1.0;
		    else return zahl*sFakultaet(zahl-1);
		}
		else return 0.0;
	}
}
