Equation en php

Résolu
Pilpot Messages postés 14 Date d'inscription samedi 27 décembre 2003 Statut Membre Dernière intervention 8 février 2010 - 23 juin 2007 à 14:03
Pilpot Messages postés 14 Date d'inscription samedi 27 décembre 2003 Statut Membre Derniè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

8 réponses

audayls Messages postés 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 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";
                }
            }
        }
    }
}
?>

For every choice, a consequence (Fable)
3
audayls Messages postés 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 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";
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
?>

For every choice, a consequence (Fable)
3
audayls Messages postés 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 août 2008
23 juin 2007 à 15:12
Salut,
Pas le temps de le faire maintenant mais si tu peux patienter un peu ce soir je t'aide 

For every choice, a consequence (Fable)
0
Pilpot Messages postés 14 Date d'inscription samedi 27 décembre 2003 Statut Membre Dernière intervention 8 février 2010
24 juin 2007 à 01:50
[red]Prout !s/red
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pilpot Messages postés 14 Date d'inscription samedi 27 décembre 2003 Statut Membre Dernière intervention 8 février 2010
24 juin 2007 à 01:54
[red]Prout !s/red
0
Pilpot Messages postés 14 Date d'inscription samedi 27 décembre 2003 Statut Membre Derniè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 ?

Merci
0
Pilpot Messages postés 14 Date d'inscription samedi 27 décembre 2003 Statut Membre Dernière intervention 8 février 2010
25 juin 2007 à 11:29
[red]Prout !s/red
0
Pilpot Messages postés 14 Date d'inscription samedi 27 décembre 2003 Statut Membre Dernière intervention 8 février 2010
25 juin 2007 à 18:39
Je disais donc...

Un grand merci pour les réponses rapides et adaptées...

+++
0
Rejoignez-nous