All pastes #899830 Raw Edit

CaNu

public javascript v1 · immutable
·published 2008-02-11 13:37 UTC
rendered paste body
function validData(Xo, nbDec){	var erreur = 0;	if (!isDataValid(Xo))		erreur = 1;			if (!isDataValid(nbDec))		erreur = 2;	else		if(nbDec < 0)			erreur = 3;		return erreur;}function isDataValid(data){		if (isNaN(data))		return false;	else		return true;}function dispatchErreur(erreur){	var msg;	msg = "";	switch(erreur){		case 1: msg = "Xo doit etre un chiffre"; break;		case 2: msg = "NbDecimales doit etre un chiffre"; break;		case 3: msg = "NbDecimales doit etre positif"; break;	}	document.getElementById('nr_res').value = msg;}function calc(){	var fct = document.getElementById('nr_slct').value;	//alert(fct);	if (fct == "1" || fct == "2" || fct == "3" || fct == "4" || fct == "5"){		var Xo, nbDec, erreur;		Xo = parseFloat(document.getElementById('nr_x0').value);		nbDec = parseInt(document.getElementById('nr_dec').value);		//alert(Xo+"\n"+nbDec);				erreur = validData(Xo, nbDec);		if (erreur == 0) 			calcNewRaph(Xo,nbDec,fct);		else			dispatchErreur(erreur);		}	else{		document.getElementById('nr_res').value = "Erreur dans le choix de la fonction";		return false;	}}function calcNewRaph(Xn,nbDec,fct){	var ok = false;	var fXn, fpXn, XnSuiv;	fXn = fpXn = XnSuiv = 0;		while(!ok){				fXn = selectFct(fct,Xn,0);		fpXn = selectFct(fct,Xn,1);				XnSuiv = calcXnSuiv(Xn,fXn,fpXn);		ok = isOk(Xn,XnSuiv,nbDec);		//alert(XnSuiv);		Xn = XnSuiv;	}	document.getElementById('nr_res').value = XnSuiv.toFixed(nbDec);}function selectFct(fct, Xn, type){	switch(fct){		case "1" : return calcFct1(Xn,type); break;		case "2" : return calcFct2(Xn,type); break;		case "3" : return calcFct3(Xn,type); break;		case "4" : return calcFct4(Xn,type); break;		case "5" : return calcFct5(Xn,type); break;		default: document.getElementById('nr_res').value = "Aucune fonction choisie";	}	}function calcXnSuiv(Xn, fXn, fpXn){	return (Xn - (fXn/fpXn));}function calcFct1(Xn,type){	if (type == 0)		return Math.pow(Xn,3) - Math.pow(Xn,2) + 1;	else		return 3*Math.pow(Xn,2) - 2*Xn;}function calcFct2(Xn,type){	if (type == 0)		return Math.pow(Xn,4) - 3*Math.pow(Xn,2) + 75*Xn - 10000;	else		return 4*Math.pow(Xn,3) - 6*Xn + 75;}function calcFct3(Xn, type){	if(type == 0)		return Math.pow(Xn,3) - 3*Xn  + 1;	else		return 3*Math.pow(Xn,2) - 3;}function calcFct4(Xn, type){	if(type == 0)		return Math.pow(Xn, 2) - 7;	else		return 2*Xn;}function calcFct5(Xn, type){	if(type == 0)		return Xn - Math.cos(Xn);	else		return 1 + Math.sin(Xn);}function isOk(Xn,XnSuiv,nbDec){	if (round2(Xn,nbDec) == round2(XnSuiv,nbDec))		return true;}function round2(nb, dec) {	nb *= Math.pow(10,dec);	nb  = Math.round(nb);	nb *= Math.pow(10,-dec);	return nb;}