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