Pilpot
Messages postés14Date d'inscriptionsamedi 27 décembre 2003StatutMembreDernière intervention 8 février 2010
-
23 juin 2007 à 14:03
Pilpot
Messages postés14Date d'inscriptionsamedi 27 décembre 2003StatutMembreDernière intervention 8 février 2010
-
25 juin 2007 à 18:39
Bonjour,
Je suis actuellement entrain d'écrire un script qui aurait pour but de calculer les inconnues d'une équation.
Je m'explique : je voudrais que l'on puisse entrer par exemple une hauteur en cm et que ce script puisse me dire combien de 'blocs' de hauteur 11,33,47cm peuvent égaler cette hauteur.
Exemple : j'entre la valeur 80 cm en hauteur, le resultat devrait être : 3*11cm + 1*47cm est possible et 1*33cm + 1*47cm est possible.
Ceci prenant compte de toutes les combinaisons possibles...
Un grand merci pour votre aide,
même une piste d'idée me serait utile,
Pilpot
A voir également:
"Php version 4.4.5" "build date" "server api" "php variables" commend
audayls
Messages postés373Date d'inscriptionsamedi 9 juillet 2005StatutMembreDernière intervention11 août 2008 23 juin 2007 à 19:54
Voilà
<?php
$hauteur = 80; // On définie la hauteur voulu
$bloc = array(4, 11, 33, 47); // On rentre les valeurs des blocs.
sort($bloc); // On trie les blocs par ordre croissant.
echo 'Avec une hauteur de ',$hauteur,' :',"
\r\n";
$i = -1;
while (isset($bloc[++$i])) {
$j = 0;
while ($bloc[$i]*++$j <= $hauteur) {
if ($bloc[$i]*$j === $hauteur) echo 'Il y a ',$j,' * ',$bloc[$i],"
\r\n";
else {
$k = $i;
while (isset($bloc[++$k])) {
$l = 0;
while ($bloc[$i]*$j+$bloc[$k]*++$l <= $hauteur) {
if ($bloc[$i]*$j+$bloc[$k]*$l === $hauteur) echo 'Il y a ',$j,' * ',$bloc[$i],' + ',$l,' * ',$bloc[$k],".
\r\n";
}
}
}
}
}
?>
audayls
Messages postés373Date d'inscriptionsamedi 9 juillet 2005StatutMembreDernière intervention11 août 2008 24 juin 2007 à 14:52
Il suffit de rajouter le code du "else" en l'adaptant :
<?php
$hauteur = 255; // On définie la hauteur voulu
$bloc = array(31, 41, 51, 61, 71); // On rentre les valeurs des blocs.
sort($bloc); // On trie les blocs par ordre croissant.
echo 'Avec une hauteur de ',$hauteur,' :',"
\r\n";
$i = -1;
while (isset($bloc[++$i])) {
$j = 0;
while ($bloc[$i]*++$j <= $hauteur) {
if ($bloc[$i]*$j === $hauteur) echo 'Il y a ',$j,' * ',$bloc[$i],"
\r\n";
else {
$k = $i;
while (isset($bloc[++$k])) {
$l = 0;
while ($bloc[$i]*$j+$bloc[$k]*++$l <= $hauteur) {
if ($bloc[$i]*$j+$bloc[$k]*$l === $hauteur) echo 'Il y a ',$j,' * ',$bloc[$i],' + ',$l,' * ',$bloc[$k],".
\r\n";
else {
$m = $k;
while (isset($bloc[++$m])) {
$n = 0;
while ($bloc[$i]*$j+$bloc[$k]*$l+$bloc[$m]*++$n <= $hauteur) {
if ($bloc[$i]*$j+$bloc[$k]*$l+$bloc[$m]*$n === $hauteur) echo 'Il y a ',$j,' * ',$bloc[$i],' + ',$l,' * ',$bloc[$k],' + ',$n,' * ',$bloc[$m],".
\r\n";
else {
$o = $m;
while (isset($bloc[++$o])) {
$p = 0;
while ($bloc[$i]*$j+$bloc[$k]*$l+$bloc[$m]*$n+$bloc[$o]*++$p <= $hauteur) {
if ($bloc[$i]*$j+$bloc[$k]*$l+$bloc[$m]*$n+$bloc[$o]*$p === $hauteur) echo 'Il y a ',$j,' * ',$bloc[$i],' + ',$l,' * ',$bloc[$k],' + ',$n,' * ',$bloc[$m],' + ',$p,' * ',$bloc[$o],".
\r\n";
else {
$q = $o;
while (isset($bloc[++$q])) {
$r = 0;
while ($bloc[$i]*$j+$bloc[$k]*$l+$bloc[$m]*$n+$bloc[$o]*$p+$bloc[$q]*++$r <= $hauteur) if ($bloc[$i]*$j+$bloc[$k]*$l+$bloc[$m]*$n+$bloc[$o]*$p+$bloc[$q]*$r === $hauteur) echo 'Il y a ',$j,' * ',$bloc[$i],' + ',$l,' * ',$bloc[$k],' + ',$n,' * ',$bloc[$m],' + ',$p,' * ',$bloc[$o],' + ',$r,' * ',$bloc[$q],".
\r\n";
}
}
}
}
}
}
}
}
}
}
}
}
}
?>
Pilpot
Messages postés14Date d'inscriptionsamedi 27 décembre 2003StatutMembreDernière intervention 8 février 2010 24 juin 2007 à 01:59
Désolé pour les messages précédents, la textbox ne fonctionne apparemment pas sous minefield.
Merci pour la réponse rapide !
Je voudrais également pouvoir avoir les combinaisons suivantes : 3*41 123 et 1*31 + 1*41 + 1*51 123
Jusque 5 blocs différenciés...
Pourrais-tu m'expliquer ?