Convertir en mètre et écrire sous forme scientifique
$juste = 1 ;
//initialistaion des varaibles envoyées par le post
$nombre_alea = $_POST['nombre_alea'];
$pref = $_POST['pref'];
$prefval = $_POST['prefval'];
$a = $_POST['a'];
$b = $_POST['b'];
if ($_POST['Verifier'])
{
//génération de la solution
$nombre = abs ($nombre_alea) ;
$puissance = floor (log10($nombre) );
$p = ($nombre_alea / pow(10,$puissance) ) ;
$puissance_modif = $puissance + $prefval ;
$decimales = 5-$puissance ;
$nb_formate = number_format($nombre_alea, $decimales, ',', ' ');
echo " Pour écrire le nombre L= $nb_formate $pref , vous avez proposé: $a";
if ($b)
{
echo " x 10 $b" ;
}
echo " m
\n" ;
//vérifiation de la valeur de la puissance
if ($puissance_modif==$b)
{
//vérification de la valeur du nombre avant la puissance. bug php, donc pas d'égalité mais on vérifie si la différence est inférieur à 1E-12
$compa = abs($p-$a) ;
if ($compa<1E-12)
{
$juste = 1 ;
echo " CORRECT
" ;
}
else
{
echo " FAUX Rappelez-vous que l'écriture scientifique utilise un nombre compris entre 1 et 10 (exclus)
" ;
$juste = 0 ;
}
}
else
{
echo " FAUX Erreur dans la puissance de 10
" ;
$juste = 0 ;
}
}
//fin boucle si vérifier existe
?>
if ($juste == 1)
{
// initialise avec les microsecondes depuis la dernière seconde entière
mt_srand((float) microtime()*1000000);
//détermination du nombre
$randvala = mt_rand(0,30000);
$randvalb = mt_rand(-10,10);
$div = pow(10,$randvalb);
$nombre_alea = $randvala / $div ;
//déterminaion du préfixe
$randpref = mt_rand(1,12);
//trouver une méthode plus simple pour affecter les variables
if ($randpref == 1)
{
$pref = "pm" ;
$prefval = -12 ;
}
if ($randpref == 2)
{
$pref = "nm" ;
$prefval = -9 ;
}
if ($randpref == 3)
{
$pref = "m" ;
$prefval = -6 ;
}
if ($randpref == 4)
{
$pref = "mm" ;
$prefval = -3 ;
}
if ($randpref == 5)
{
$pref = "cm" ;
$prefval = -2 ;
}
if ($randpref == 6)
{
$pref = "dm" ;
$prefval = -1 ;
}
if ($randpref == 7)
{
$pref = "m" ;
$prefval = 0 ;
}
if ($randpref == 8)
{
$pref = "dam" ;
$prefval = 1 ;
}
if ($randpref == 9)
{
$pref = "hm" ;
$prefval = 2 ;
}
if ($randpref == 10)
{
$pref = "km" ;
$prefval = 3 ;
}
if ($randpref == 11)
{
$pref = "Mm" ;
$prefval = 6 ;
}
if ($randpref == 12)
{
$pref = "Gm" ;
$prefval = 9 ;
}
}
echo "
\n" ;
echo " Convertir en mètre et écrire sous la forme scientifique le nombre suivant : L =";
$nombre = abs ($nombre_alea) ;
$puissance = floor (log10($nombre) ) ;
$decimales = 5-$puissance ;
$nb_formate = number_format($nombre_alea, $decimales, ',', ' ');
echo " $nb_formate $pref ";
echo "
\n " ;
?>
Attention. Pour que le script puisse comprendre ce que vous écrivez, vous devez entrer les nombres avec pour séparateur décimal un point et non pas une virgule.