Developpement/developper d'une expression

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 948 fois - Téléchargée 32 fois


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

Ajouter un commentaire Commentaires
Messages postés
65
Date d'inscription
jeudi 20 janvier 2005
Statut
Membre
Dernière intervention
25 juin 2010

Jai jamais touché à autre chose que php ;)
et jai mis cette source ici au cas ou que quelquun en a besoin (de developper)
apres la modularite, ya pas a en avoir puisque sa sert a une seule chose !
Messages postés
10
Date d'inscription
samedi 23 mars 2002
Statut
Membre
Dernière intervention
3 mars 2005

bravo si tu arrives à décrypter ton code 1 an après sans commentaire.
je dirai que ton code manque beaucoup de modularité.
Le principe même de la POO n'est pas appliqué. est ce du bidouillage?
Messages postés
65
Date d'inscription
jeudi 20 janvier 2005
Statut
Membre
Dernière intervention
25 juin 2010

coucou747, le code est tres clair ... et ya aucune modification a apporter, jai juste mis comment utiliser la classe (de toute facon je commente jamais ce que je fais (perte de temp) et aussi car elles nont pas pour but detre mses ici, mais javais envie detre gentil :) de participer :D
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
"JE SAIS JEXPLIQUE TRES MAL !"
je confirme, t'as pas une ligne de commentaire...
Messages postés
166
Date d'inscription
lundi 17 janvier 2005
Statut
Membre
Dernière intervention
8 avril 2007
1
Ta fonction manque énormément de modularité. Tu mets pratiquement tout dans la fonction calc que tu pourrais séparé en beaucoup d'autre fonction privé, ce qui aurait mieu utilisé le système de classe.
Afficher les 8 commentaires

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.