Developpement/developper d'une expression


Contenu du snippet

J'ai fais ce code ya bien longtemps (je dirais 3,4 mois) et là j'viens d'me dire pourquoi pas partager cette classe qui ne sert absolument a rien ;)
Si il y a des bug (cela ce peux puique jai pas modifier la classe depuis 3,4 mois) veuillez m'en faire part !
Enjoy !

Source / Exemple :


class DV extends Math {
	var $result;
	var $type;
                var $types = array('(a-b)²','(a+b)²','(a-b)(a+b)');
	var $a;
	var $b;
	function settype($choice) {
	        if(!in_array($choice,$this->types)) { return false; }
	        else {
			$this->type = $choice;
			return true;
		}
	}
	function calc($a,$b,$xName='',$yName='') {
	        $this->a = $a;
	        $this->b = $b;
		if($this->type == '(a-b)²') {
			if($a == $xName) {
			        $this->result = $xName."²";
			}
			elseif(strpos($a,$xName)) {
			       $this->result = (substr($a,0,strpos($a,$xName)) * substr($a,0,strpos($a,$xName))).$xName."²";
			}
			else {
			       $this->result = $a * $a;
			}
			if(strpos($a,$xName) || strpos($b,$yName)) {
				if(strpos($a,$xName)) {
				        $aTmp = (2 * substr($a,0,strpos($a,$xName))).$xName;
				}
				else {
				        $aTmp = 2 * $a;
				}
				if(strpos($b,$yName)) {
				        $bTmp = (2 * substr($b,0,strpos($b,$yName))).$yName;
				}
				else {
				        $bTmp = 2 * $b;
				}
			        $this->result .= " - (".$aTmp." + ".$bTmp.")";
			}
			else {
			        $this->result .= " - ".bcmul($a * $b,2);
			}
			if($b == $yName) {
			        $this->result .= " + ".$yName."²";
			}
			elseif(strpos($b,$yName)) {
			        $this->result .= " + ".(substr($b,0,strpos($b,$yName)) * substr($b,0,strpos($b,$yName))).$yName."²";
			}
			else {
			        $this->result .= " + ".$b * $b;
			}
		}
		elseif($this->type == '(a+b)²') {
			if($a == $xName) {
			        $this->result = $xName."²";
			}
			elseif(strpos($a,$xName)) {
			       $this->result = (substr($a,0,strpos($a,$xName)) * substr($a,0,strpos($a,$xName))).$xName."²";
			}
			else {
			       $this->result = $a * $a;
			}
			if(strpos($a,$xName) || strpos($b,$yName)) {
				if(strpos($a,$xName)) {
				        $aTmp = (2 * substr($a,0,strpos($a,$xName))).$xName;
				}
				else {
				        $aTmp = 2 * $a;
				}
				if(strpos($b,$yName)) {
				        $bTmp = (2 * substr($b,0,strpos($b,$yName))).$yName;
				}
				else {
				        $bTmp = 2 * $b;
				}
			        $this->result .= " + (".$aTmp." + ".$bTmp.")";
			}
			else {
			        $this->result .= " + ".bcmul($a * $b,2);
			}
			if($b == $yName) {
			        $this->result .= " + ".$yName."²";
			}
			elseif(strpos($b,$yName)) {
			        $this->result .= " + ".(substr($b,0,strpos($b,$yName)) * substr($b,0,strpos($b,$yName))).$yName."²";
			}
			else {
			        $this->result .= " + ".$b * $b;
			}
		}
  		else {
			if($a == $xName) {
				$aResultTmp = $a."²";
				if(substr($aResultTmp,0,1) == '-') {
				        $aResultTmp = " - ".substr($aResultTmp,1,strlen($aResultTmp));
				}
				$this->result = $aResultTmp;
			}
			elseif(strpos($a,$xName)) {
			        $aResultTmp = (substr($a,0,strpos($a,$xName)) * substr($a,0,strpos($a,$xName))).$xName."²";
			        if(substr($aResultTmp,0,1) == '-') {
				        $aResultTmp = " - ".substr($aResultTmp,1,strlen($aResultTmp));
				}
				$this->result = $aResultTmp;
			}
			else {
			        $aResultTmp = $a * $a;
			        if(substr($aResultTmp,0,1) == '-') {
				        $aResultTmp = " - ".substr($aResultTmp,1,strlen($aResultTmp));
				}
				$this->result = $aResultTmp;
			}
                        if(strpos($a,$xName) && strpos($b,$yName)) {
			        $aResultTmp = (substr($a,0,strpos($a,$xName)) * substr($b,0,strpos($b,$yName))).$xName.$yName;
			        $bResultTmp = (substr($b,0,strpos($b,$yName)) * substr($a,0,strpos($a,$xName))).$yName.$xName;
			        if(substr($aResultTmp,0,1) != '-') {
			                $aResultTmp = " + ".$aResultTmp;
				}
				else {
				        $aResultTmp = " - ".substr($aResultTmp,1,strlen($aResultTmp));
				}
			        if(substr($bResultTmp,0,1) == '-') {
					$bResultTmp = " + ".substr($bResultTmp,1,strlen($bResultTmp));
				}
				else {
					$bResultTmp = " + ".$bResultTmp;
				}
				$this->result .= $aResultTmp;
				$this->result .= $bResultTmp;
			}
			elseif(strpos($a,$xName) && !strpos($b,$yName)) {
			        $this->result .= (substr($a,0,strpos($a,$xName)) * substr($b,0,strpos($b,$yName))).$xName;
			        $this->result .= (substr($b,0,strpos($b,$yName)) * substr($a,0,strpos($a,$xName))).$yName;
			        if(substr($aResultTmp,0,1) != '-') {
			                $aResultTmp = " + ".$aResultTmp;
				}
				else {
				        $aResultTmp = " - ".substr($aResultTmp,1,strlen($aResultTmp));
				}
			        if(substr($bResultTmp,0,1) == '-') {
					$bResultTmp = " + ".substr($bResultTmp,1,strlen($bResultTmp));
				}
				else {
					$bResultTmp = " + ".$bResultTmp;
				}
				$this->result .= $aResultTmp;
				$this->result .= $bResultTmp;
			}
			elseif(!strpos($a,$xName) && strpos($b,$yName)) {
			        $this->result .= (substr($a,0,strpos($a,$xName)) * substr($b,0,strpos($b,$yName))).$yName;
			        $this->result .= (substr($b,0,strpos($b,$yName)) * substr($a,0,strpos($a,$xName))).$xName;
			        if(substr($aResultTmp,0,1) != '-') {
			                $aResultTmp = " + ".$aResultTmp;
				}
				else {
				        $aResultTmp = " - ".substr($aResultTmp,1,strlen($aResultTmp));
				}
			        if(substr($bResultTmp,0,1) == '-') {
					$bResultTmp = " + ".substr($bResultTmp,1,strlen($bResultTmp));
				}
				else {
					$bResultTmp = " + ".$bResultTmp;
				}
				$this->result .= $aResultTmp;
				$this->result .= $bResultTmp;
			}
			else {
			        $this->result .= (substr($a,0,strpos($a,$xName)) * substr($b,0,strpos($b,$yName)));
			        $this->result .= (substr($b,0,strpos($b,$yName)) * substr($a,0,strpos($a,$xName)));
			        if(substr($aResultTmp,0,1) != '-') {
			                $aResultTmp = " + ".$aResultTmp;
				}
				else {
				        $aResultTmp = " - ".substr($aResultTmp,1,strlen($aResultTmp));
				}
			        if(substr($bResultTmp,0,1) != '-') {
			                $bResultTmp = " + ".$bResultTmp;
				}
				else {
				        $bResultTmp = " - ".substr($bResultTmp,1,strlen($bResultTmp));
				}
				$this->result .= $aResultTmp;
				$this->result .= $bResultTmp;
			}
			if($b == $yName) {
			        $bResultTmp = $yName."²";
			        if(substr($bResultTmp,0,1) != '-') {
			                $bResultTmp = " + ".$bResultTmp;
				}
				else {
				        $bResultTmp = " - ".substr($bResultTmp,1,strlen($bResultTmp));
				}
				$this->result .= $bResultTmp;
			}
			elseif(strpos($b,$yName)) {
				(substr($b,0,1) == '-') ? $sign = '-' : $sign = '+';
			        $bResultTmp = (substr($b,0,strpos($b,$yName)) * substr($b,0,strpos($b,$yName))).$yName."²";
				$this->result .= " ".$sign." ";
				$this->result .= (substr($bResultTmp,0,1) == '-') ? substr($bResultTmp,1,strlen($bResultTmp)) : $bResultTmp;
			}
			else {
			        (substr($b,0,1) == '-') ? $sign = '-' : $sign = '+';
			        $bResultTmp = $b * $b;
			        $this->result .= " ".$sign." ".(substr($bResultTmp,0,1) == '-') ? substr($bResultTmp,1,strlen($bResultTmp)) : $bResultTmp;
			}
		}
	}
	function _return($xName) {
		print('<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD CLASS=CODE>');
		print('<FONT CLASS=LITTLEBLACK>Developpement de <I>'.$this->type.'</I> avec <I>a='.$this->a.'</I> et <I>b='.$this->b.'</I></FONT><BR><BR>');
		print($xName." = ".$this->result);
		print('</TD></TR></TABLE>');
	}
}

Conclusion :


<?php
// utilisation de la classe pour les noobs

$DV = New DV; // declaration de la classe
$DV->settype('(a+b)²'); // pose le type dexpression
$DV->calc("5","2x","","x"); // 5=a; 2x=b; Si il y a une inconnue, nommez la, comme pour 2x je la nomme x après..
$DV->_return("A"); // A ? Petite aide: A= 25 + 20x² + 4x² (si jarrive encore a calculer :x)

JE SAIS JEXPLIQUE TRES MAL !
Plus d'outils ? mailto:nico_zb@hotmail.com
Exemples ? header('Location: http://gfx.themagma.fr/'); // Maintenance technique

A voir également