Script pour résoudre des équations.

Contenu du snippet

J'ai fait ce script pour les rédoudre. Il ne peut rédoure des équations avec des calcules à faire des deux cotés gendre: (1+2)*x=2+1. Il faut faire (des calcules=un nombre). S'il ya des parenthèses il ne faut pas mettre plusieurs opérations qui ne sont pas du même gendre ex.:(2+x)+1-1 ne marcheras pas. Voila je crois avoir tous dit.
  • /*/*/*/*/*/*/*/*/*/*/*/*/*VIENT D'ÊTRE MODIFIE POUR RESOUDRE LES PUISSANCES*/*/*/*/*/*/*

Source / Exemple :


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script>
function cal () {
//toCal est la variable la plus imporatante du programme c'est toCal qui va est modifié
var toCal = document.forms.elements[ "ares"].value
//procedure contient une chaine spécifiant comment on fait pour obtenir le résultat final
var procedure = ""
//side[0] et side[1] contiennent chacun un coté de l'équation
side = toCal.split("=")
//op contient la recherche de signes "+";"-";"/";"*"
var op = new Array()
//did est utilisé pour savoir si il reste une opération à faire
did = false
//x c'est pour commencer la loop ligne 99
x = true
//chercher les jeux de parenthèses
finder = side[0].indexOf("(")
finderB = side[0].indexOf(")")
var para = ""
if (finder != -1) {
	for(inc = finder+1; inc <= finderB - 1; inc++) {
		para += side[0].charAt(inc)
	}
	paraB = side[0].split(")")
	side[0] = paraB[1]
	paraT = true
}
//Le programme a terminé de cherecher des parenthèses
//S'il en a trouvé paraT = true et side[0] contient le calcul sans se qu'il y a des
//les parenthèses et para = le calcul dans la parnthèse

//chercher s'il faut dévellopper gendre (1+2)*x = x*1+x*2
var devl = side[0].indexOf("*x")
if (devl != -1) {
	var sous = para.indexOf("-")
	if (sous != -1) {
		var dev = para.split("-")
		dev[0] = parseFloat(dev[0])
		dev[1] = parseFloat(dev[1])
		var devv = dev[0] - dev[1]
		side[0] = devv + "*x"
		procedure = "<p>" + "Je dévloppe" + "</p>"
	}
	else {
		var addt = para.indexOf("+")
		if (addt != -1) {
			var dv = para.split("+")
			dv[0] = parseFloat(dv[0])
			dv[1] = parseFloat(dv[1])
			var dvv = dv[0] + dv[1]
			side[0] = dvv + "*x"
			procedure = "<p>" + side[0] + "</p>"
			procedure = "<p>" + "Je dévloppe" + "</p>"
		}
	}
}
//Le programme a terminé de rechercher "*x"(s'il trouve il faut développer)

//Maintenant il cherche "+x" ou "-x"
//S'il trouve on procède de façon très differente

//ex.: (1+2)+x=10 donc 3+x=10 donc x = 7
//ex.: (1+2)-x=10 donc 3-x=10 donc -x=7 donc x=-7

var Mx = side[0].indexOf("+x")
	if (Mx != -1) {
		side[0] = para + side[0]
		procedure = "<p>" + side[0] + "</p>"
	}
var Mx = side[0].indexOf("-x")
	if (Mx != -1) {
		var addtt = para.indexOf("+")
			if (addtt != -1) {
				var a = para.split("+")
				a[0] = parseFloat(a[0])
				a[1] = parseFloat(a[1])
				var J = side[0]
				side[0] = a[0] + a[1]
				side[0] += "" + J
				procedure = "<p>" + side[0] + "</p>"
			}
		addtt = para.indexOf("-")
			if (addtt != -1) {
				var a = para.split("+")
				a[0] = parseFloat(a[0])
				a[1] = pzrseFloat(a[1])
				J = side[0]
				side[0] = a[0] - a[1]
				side[0] += "" + J
				procedure = "<p>" + side[0] + "</p>"
			}
	}
	
//Les choses serieuses commencenent il cherche des additions, soutractions,etc. a
//resoudre c'est ici que l'equation final sera resoulu

while (x == true) {
		//sou = soustracions a faire
		//adt = additions a faire
		//div = divisions a faire
		//mul = multiplications a faire
		//remarques:
		//toutes les matrices(arays) sont
		//numerotés a partir de 0
		//les additions
		op[0] = side[0].indexOf("+");
		//si le signe "+" a été trouvé
		if (op[0] != -1) {
			sou = side[0].split("+");
			//ici c'est pour le cas ou il y avait des parentheses
			//et que side[0] = ce qu'il y hors de la parenthèse
			if (sou[0] == "") {
				//si il y a plusieurs additions a faire hors de la parenthèse
				if (sou.length > 2) {
					for (y = 2; y <= sou.length - 1;y++) {
						sou[1] = parseFloat(sou[1])
						sou[y] = parseFloat(sou[y])
						sou[1] += sou[y]
					}
				}
				side[1] = parseFloat(side[1]);
				sou[1] = parseFloat(sou[1]);
				side[1] -= sou[1]
				side[0] = ""
				procedure += "<p>Je soustrait " + sou[1] + " à chaque membre.</p>"
				did = true
			}
			else {
					if (sou.length > 2) {
						for (y = 2; y <= sou.length - 1;y++) {
							sou[1] += "+" + sou[y]
						}
					}
				side[1] = parseFloat(side[1]);
				sou[0] = parseFloat(sou[0]);
				side[1] -= sou[0]
				side[0] = sou[1]
				procedure += "<p>Je soustrait " + sou[0] + " à chaque membre.</p>"
				did = true
			}
		}
		//les soustractions
		//c'est ce qu'il y a de plus compliqué-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
		op[1] = side[0].indexOf("-");
			if (op[1] != -1) {
				//adt here
				adt = side[0].split("-");
				if (adt[0] != "") {
					// x est devant
							if (adt[0] == "x") {
								side[1] = parseFloat(side[1]);
								adt[1] = parseFloat(adt[1]);
								side[1] += adt[1]
								side[0] = adt[0]
								procedure += "<p>J'ajoute " + adt[1] + " à chaque membre.</p>"
								did = true
							}
							// x est derrière*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*--*--*--*--*--*--*--*--*--*--*--*--*--*
							else {
								side[1] = parseFloat(side[1]);
								adt[0] = parseFloat(adt[0]);
								side[1] -= adt[0]
								side[1] -= side[1] * 2
								side[0] = adt[1]
								procedure += "<p>Je soustrait " + adt[0] + " à chaque membre.</p>" + "<p>J'inverse les signes.</p>"
								did = true
							}
				}
				else {
					side[1] = parseFloat(side[1]);
					adt[1] = parseFloat(adt[1]);
					side[1] += adt[1]
					side[0] = ""
					procedure += "<p>J'ajoute " + adt[1] + " à chaque membre.</p>"
					did = true
				}
			}
		//pour les multiplications
		op[2] = side[0].indexOf("*");
			if (op[2] != -1) {
				div = side[0].split("*");
				if (div[0] != "") {
					if (div.length > 2) {
						for (y = 2; y <= div.length - 1;y++) {
							div[1] += "*" + div[y]
						}
					}
					side[1] = parseFloat(side[1]);
					div[0] = parseFloat(div[0]);
					side[1] = side[1] / div[0]
					side[0] = div[1]
					procedure += "<p>Je divise chaque membre par " + div[0] + ".</p>"
					did = true
				}
				else {
					if (sou.length > 2) {
						for (y = 2; y <= sou.length - 1;y++) {
							sou[y] = parseFloat(sou[y])
							sou[1] = sou[1] * sou[y]
						}
					}
					side[1] = parseFloat(side[1]);
					div[1] = parseFloat(div[1]);
					side[1] = side[1] / div[1]
					side[0] = ""
					procedure += "<p>Je divise chaque membre par " + div[1] + ".</p>"
					did = true
				}
			}
		//pour les divisions
		op[3] = side[0].indexOf("/");
			if (op[3] != -1) {
				mul = side[0].split("/");
				if (mul[0] != "") {
					if (mul.length > 2) {
						for (y = 2; y <= mul.length - 1;y++) {
							mul[0] += "/" + mul[y]
						}
					}
					side[1] = parseFloat(side[1]);
					mul[1] = parseFloat(mul[1]);
					side[1] = side[1] * mul[1]
					side[0] = mul[0]
					procedure += "<p>Je multiplie chaque membre par " + mul[1] + ".</p>"
					did = true
				}
				else {
					if (mul.length > 2) {
						for (y = 2; y <= mul.length - 1;y++) {
							mul[y] = parseFloat(mul[y])
							mul[1] = mul[1] * mul[y]
						}
					}
					side[1] = parseFloat(side[1]);
					mul[1] = parseFloat(mul[1]);
					side[1] = side[1] * mul[1]
					side[0] = ""
					procedure += "<p>Je multiplie chaque membre par " + mul[1] + ".</p>"
					did = true
				}
			}
			op[3] = side[0].indexOf("^");
			if (op[3] != -1) {
				carre = side[0].split("^");
				if (carre[0] != "") {
					if (carre.length > 2) {
						for (y = 2; y <= carre.length - 1;y++) {
							carre[0] += "^" + carre[y]
						}
					}
					side[1] = parseFloat(side[1]);
					carre[1] = parseFloat(carre[1]);
					side[1] = Math.sqrt(carre[1])
					side[0] = carre[0]
					did = true
				}
				else {
					side[1] = parseFloat(side[1]);
					carre[1] = parseFloat(carre[1]);
					side[1] = Math.sqrt(carre[1])
					side[0] = ""
					did = true
				}
			}
	//tous se bloc if détermine s'il faut
	//recommencer la loop
	//si x = false alors le bloc a déterminé qu'il faut pas refaire la loop
	//sinon il la refait
	if (did == false) {
			x = false
	}
	else {
		if (side[0] == "") {
			x = true
			side[0] = para
			procedure += "<p>" + para + " = " + side[1] +"</p>"
		}
		did = false; x = true
	}
	//Ca c'est pour remettre toutes les valeurs de recherches
	//de signes a null pour ne pas provoquer des erreurs
	for (b = 0;b <= 3; b++) {
		op[b] = null
	}
}
document.write("<b>" + procedure + "</b>")
document.write('<font size="5">' + "<p>" + side[0] + " = " + side[1] + "</p>" + "</font>")
document.write('<a href="javascript:window.history.back()">Retour(retern)</ a>')
}
</script>
</head>
<body bgcolor="white">
<form name="forms">
Mettre ici l'equation:<input type="text" name="ares" value="(1+2)*x=10">
<input type="button" value="calculer" onclick="cal()">
</form>
<form>
<br></br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="button" value="  +  " onclick="document.forms.elements[ 'ares'].value+= '+'"><input type="button" value="  -  " onclick="document.forms.elements[ 'ares'].value+= '-'"><input type="button" value="  *  " onclick="document.forms.elements[ 'ares'].value+= '*'"><input type="button" value="  /  " onclick="document.forms.elements[ 'ares'].value+= '/'">

  • =multiplier /=diviser
<br></br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="button" value=" 1 " onclick="document.forms.elements[ 'ares'].value+= '1'"><input type="button" value=" 2 " onclick="document.forms.elements[ 'ares'].value+= '2'"><input type="button" value=" 3 " onclick="document.forms.elements[ 'ares'].value+= '3'"><input type="button" value=" 4 " onclick="document.forms.elements[ 'ares'].value+= '4'"> <br></br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="button" value=" 5 " onclick="document.forms.elements[ 'ares'].value+= '5'"><input type="button" value=" 6 " onclick="document.forms.elements[ 'ares'].value+= '6'"><input type="button" value=" 7 " onclick="document.forms.elements[ 'ares'].value+= '7'"><input type="button" value=" 8 " onclick="document.forms.elements[ 'ares'].value+= '8'"> <br></br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="button" value=" 9 " onclick="document.forms.elements[ 'ares'].value+= '9'"><input type="button" value=" 0 " onclick="document.forms.elements[ 'ares'].value+= '0'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="button" value=" x " onclick="document.forms.elements[ 'ares'].value+= 'x'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Seul lettre autorisé <br></br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="button" value=" = " onclick="document.forms.elements[ 'ares'].value+= '='"><input type="button" value=" ( " onclick="document.forms.elements[ 'ares'].value+= '('"><input type="button" value=" ) " onclick="document.forms.elements[ 'ares'].value+= ')'"> </form> </body> </html>

Conclusion :


Si vous avez des conseils a me donner je mettrais la source a jour dès que je recois des commentaires.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.