Calculatrice

Contenu du snippet

C'est une simple calculatrice. Elle donne le résultat en nombres décimaux, binaires, octaux et hexas. C'est mon premier projet en PHP, alors soyez indulgents ;-)

Source / Exemple :


<?php
if(ereg("[a-zA-Z]|[;§µ£\$°'\"&@_!]", $_POST['calcul']))
{
	echo "Syntaxe de l'opération non valide : pas de ponctuation ni de lettres, SVP";
}
elseif($_POST['calcul'])
{
	$calcul='$result='.$_POST['calcul'].';';
	$calcul=str_replace(",", ".", $calcul);
	$calcul=str_replace("²", "^2", $calcul);

	/* On recherche les occurrence de "nombre^exposant" dans la chaîne de calcul
	   afin de le remplacer par leur valeur */
	while(ereg("\(*[0-9\*/%\+.\-]+\)*\^\(*[0-9\*/%\+.\-]+\)*", $calcul, $puissance))
	{
		$puissance[1]='$puissance[1]=pow('.str_replace("^", ",", $puissance[0]).');';
		eval($puissance[1]);
		$calcul=str_replace($puissance[0], $puissance[1], $calcul);
	}

	/* C'est ici qu'on effectue le calcul (sauf les puissances, c'est déjà fait ;-) */
	eval($calcul);

	/* C'est là qu'on convertit en binaire, hexa, octal */
	$hexa = base_convert($result, 10, 16);
	$binaire = base_convert($result, 10, 2);
	$octal = base_convert($result, 10, 8);
	$conversions = '<br><table align="center">
			   <tr>
				<td><b>Ecriture décimale :</b></td><td align="right">'.$result.'</td>
			   </tr><tr>
				<td><b>Ecriture hexadécimale :</b></td><td align="right">'.$hexa.'</td>
			   </tr><tr>
				<td><b>Ecriture octale : </b></td><td align="right">'.$octal.'</td>
			   </tr><tr>
				<td><b>Ecriture binaire :</b></td><td align="right">'.$binaire.'</td>
		           </tr>
			</table>';
};
?>
<html>
  <head>
	<title>Calculatrice</title>
  </head>
  <body bgcolor="#E6E7E6">
    <form name="calc" action="calc.php" method="post">
      <table align="center" width="300">
   	<tr>
		<td>Calcul : </td>
		<td><input type="text" name="calcul" value="<?=$result?>" align="right"></td>
	</tr>
	<tr>
		<td colspan="2" align="center"><input type="submit" value="Enter"</td>
	</tr>
      </table>
    </form>
    <?=$conversions?>
  </body>
</html>

Conclusion :


La calculatrice gère (tant bien que mal ;-)) les puissances (il y a un bug avec les opérations du type "(x^y)^z", mais ça fonctionne avec les autres schémas).
Il lui manque actuellement : le support des racines carrées, un symbole valant pi, les exponentielles et bien d'autres ...

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.