Exposant

QMeumeuh
Invité n'ayant pas de compte PHPfrance

07 sept. 2005, 20:25

Bonjour je code en ce moment une petite page PHP qui permet de calculer racine, minimum, maximum, ... d'un fonction du second degré en math (Juste pour mettre en pratique la partie des opérateurs) mais je ne sais pas comment elever à une certaine puissance une variable ... Donc par exemple 4 exp 2 = 16

Eléphant du PHP | 71 Messages

07 sept. 2005, 20:28

C'est la fonction pow() tout simplement :
http://www.php.net/manual/fr/function.pow.php

Eléphant du PHP | 72 Messages

07 sept. 2005, 20:32

Merci je venais de le voir à l'instant :D

Eléphant du PHP | 72 Messages

07 sept. 2005, 21:40

Me revoilà ! J'ai fait mes deux petits fichiers. Mais ca ne marche pas ... l'erreur est la suivante : Warning: Division by zero in /var/www/users/2417/htdocs/calc/exe.php on line 9 pourtant je n'etre pas de valeur nulles ...

1) Formulaire d'envoi :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>4DCours.be</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<form action="exe.php" method="post">

<table width="400" border="0">
  <tr>
    <td width="31">a =</td>
    <td width="359"><input type="text" name="a" size="6"></td>
  </tr>
  <tr>
    <td>b =</td>
    <td><input type="text" name="b" size="6"></td>
  </tr>
  <tr>
    <td>c = </td>
    <td><input type="text" name="c" size="6"></td>
  </tr>
</table>

<p><input type="submit" value="Calculer P (et les Racines)"></p>
</form>

</body>
</html>
2) Calcul :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>4DCours.be</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<?php

$minmax = -$b / (2 * $a);
$p = pow( $b , 2 ) - 4 * $a * $c;
$ra0 = ( -$b - sqrt( $p ) ) / 2 * $a;
$ra1 = ( -$b + sqrt( $p ) ) / 2 * $a;
$ra2 = -$b / 2 * $a;
	
/* ------------------------------------------ */

if ($a > 0) {
echo "La Fonction Admet un Minimum en : $minmax";
	
} elseif ($a < 0) { 
echo "La Fonction Admet un Maximum en : $minmax";

} else {
echo "Impossible de Connaître le Maximum ou le Minimum de cette Fonction !";
}

?>

<br>

<?php

if ($p > 0) {
echo "Première Racine : $ra1";
echo "Deuxième Racine : $ra2";
	
} elseif ($a < 0) { 
echo "Impossible de Connaître les Racines de cette Fonction !";

} elseif ($a == 0) {
echo "Unique Racine de la Fonction : $ra0";
}

?>
<body>

</body>
</html>
A mon avis sa foire dans le formulaire d'envoi mais quoi ? ...

Mammouth du PHP | 19672 Messages

07 sept. 2005, 21:54

Non, ça foite à la récupération: tu dois récupérer les valeurs envoyées par le formulaire via la super-globale $_POST de façon à initialiser tes variables $a, $b et $c : Donc tu commence le script par:
<?php
$a = $_POST['a'];
$b = $_POST['b'];
$c = $_POST['c'];
//.... reste du code de calcul
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 417 Messages

07 sept. 2005, 21:58

Désolé j'ai pas regardé tout en code en détail, ceoendant j'attire ton attention sur l'utilité d'utiliser (et de bien utiliser) les parenthèses...
Si je me rappelle bien de mes cours d'algèbre:

Par exemple:

Code : Tout sélectionner

$p = pow( $b , 2 ) - 4 * $a * $c;
devrait être, pour enlever toute ambiguïté:

Code : Tout sélectionner

$p = pow( $b , 2 ) - (4 * $a * $c);
Autre exemple:

Code : Tout sélectionner

$ra0 = ( -$b - sqrt( $p ) ) / 2 * $a;
À changer pour:

Code : Tout sélectionner

$ra0 = ( -$b - sqrt( $p ) ) / (2 * $a);
Je ne sais pas si ça réglerait ton problème, mais ça t'éviterait sûrement de t'arracher les cheveux par moments, inutilement.

Eléphant du PHP | 72 Messages

07 sept. 2005, 22:05

Normalement pour ca il n'y a aucun problème vu ke selon les priorités d'opérations la multiplication s'effectue toujours en premier, valable aussi ej pense pour le PHP. Merci Cyrano, je vais tester tout de suite :D

Eléphant du PHP | 417 Messages

07 sept. 2005, 22:16

Normalement pour ca il n'y a aucun problème vu ke selon les priorités d'opérations la multiplication s'effectue toujours en premier, valable aussi ej pense pour le PHP.
Attention!

Diviser un nombre par 2, puis multiplier le résultat par a

donne un résultat différent de:

Diviser un nombre par le produit de 2*a

Eléphant du PHP | 72 Messages

07 sept. 2005, 22:22

Oui ca je sais bien mais dans ce cas ci :
$ra0 = ( -$b - sqrt( $p ) ) / 2 * $a;
Vu que selon les propriétés d'opération on effectue toujours en premier lieu les multiplications (avant il y a encore les exposants) donc ici : 2*$a c'est exactement la meme chose que de le mettre entre parenthèses ...

Code : Tout sélectionner

16 / 4*2 = 2
et

Code : Tout sélectionner

16 / (4*2) = 2
et

Code : Tout sélectionner

16 ------ = 2 4 * 2
et

Code : Tout sélectionner

16 -------- = 2 (4 * 2)
Maintenant j'ai un autre problème, lorsque la valeur de la variable $c dépasse les 3 chiffres, le calcul ne me donne plus les racines de la fonction ... Est-ce parceque les fonctions pow() et sqrt() ont une utilisation limitée ?
Modifié en dernier par qmeuh le 07 sept. 2005, 23:45, modifié 1 fois.

Eléphant du PHP | 417 Messages

07 sept. 2005, 22:42

J'ai essayé ton script, il marche même avec des nombres de plus d'une dizaine de chiffres dans les trois variables. :!: