Afficher les nombres qui sont égales au ratio
Résolu
Anonyme1234_7288
Messages postés
64
Date d'inscription
Statut
Membre
Dernière intervention
-
Anonyme1234_7288 Messages postés 64 Date d'inscription Statut Membre Dernière intervention -
Anonyme1234_7288 Messages postés 64 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
En ce moment, je travail sur un programme en PHP, ce dernier consiste à trouver parmi toute les possibilité possible, le ratio qui est le plus près du résultat déterminé par l'utilisateur. Mais mon problème est que je suis incapable d'afficher les nombres qui sont égales ou le plus près du résultat.
Il ce peut que mon message ne soit pas claire mais à travers mon code, vous pourrez trouver des commentaires vous spécifiant l'utilité de la variable ou d'une section de code.
Si vous commencez à chercher une solutions pour mon problème, faite moi en part et nous pourrons travailler en collaboration.
Merci d'avance.
P.S. : Si vous voulez changer quelques parties du code par des fonctions ou même remplacer des tableaux par des listes, vous pouvez le faire.
Voici mon code :
En ce moment, je travail sur un programme en PHP, ce dernier consiste à trouver parmi toute les possibilité possible, le ratio qui est le plus près du résultat déterminé par l'utilisateur. Mais mon problème est que je suis incapable d'afficher les nombres qui sont égales ou le plus près du résultat.
Il ce peut que mon message ne soit pas claire mais à travers mon code, vous pourrez trouver des commentaires vous spécifiant l'utilité de la variable ou d'une section de code.
Si vous commencez à chercher une solutions pour mon problème, faite moi en part et nous pourrons travailler en collaboration.
Merci d'avance.
P.S. : Si vous voulez changer quelques parties du code par des fonctions ou même remplacer des tableaux par des listes, vous pouvez le faire.
Voici mon code :
<?php //Début des tableaux utilisés pour calculer toute les possibilités de ratio possible $gear1 = [1, 2, 3]; $gear2 = [1, 2, 3]; $gear3 = [1, 2, 3]; $gear4 = [1, 2, 3]; //Fin des tableaux utilisés pour calculer toute les possibilités de ratio possible //Début de la variable logeant le résultat $result = /*Par exemple */0.41666666666666; //Fin de la variable logeant le résultat //Début des calculs des possibilités des ratios $calc1 = (current($gear1)/current($gear2))*(current($gear3)/current($gear4)); echo $calc1; echo "\n"; next($gear4); $calc2 = (current($gear1)/current($gear2))*(current($gear3)/current($gear4)); echo $calc2; echo "\n"; next($gear4); $calc3 = (current($gear1)/current($gear2))*(current($gear3)/current($gear4)); echo $calc3; echo "\n"; reset($gear4); next($gear3); $calca1 = (current($gear1)/current($gear2))*(current($gear3)/current($gear4)); echo $calca1; echo "\n"; next($gear4); $calca2 = (current($gear1)/current($gear2))*(current($gear3)/current($gear4)); echo $calca2; echo "\n"; next($gear4); $calca3 = (current($gear1)/current($gear2))*(current($gear3)/current($gear4)); echo $calca3; echo "\n"; reset($gear4); next($gear3); $calcb1 = (current($gear1)/current($gear2))*(current($gear3)/current($gear4)); echo $calcb1; echo "\n"; next($gear4); $calcb2 = (current($gear1)/current($gear2))*(current($gear3)/current($gear4)); echo $calcb2; echo "\n"; next($gear4); $calcb3 = (current($gear1)/current($gear2))*(current($gear3)/current($gear4)); echo $calcb3; echo "\n"; //Fin des calculs des possibilités des ratios //Début des variables $calc qui sont logés dans le tableau tab() $tab = array(); array_unshift($tab, $calc1, $calc2, $calc3, $calca1, $calca2, $calca3, $calcb1, $calcb2, $calcb3); //Fin des variables $calc qui sont logés dans le tableau tab() //Début de la mise en ordre croissant et du dédoublonnement des éléments du tableau tab() echo "\n"."tab". "\n"; print_r($tab); $tab2 = array_unique($tab); asort($tab2); echo "\n"."tab2". "\n"; print_r($tab2); //Fin de la mise en ordre croissant et du dédoublonnement des éléments du tableau tab() //Début des blocs de code servant à connaitre les nombres les plus proches (Si vous ne comprenez pas cette partie, je pourrai vous l'expliquer plus en détail) reset($tab2); next($tab2); echo current($tab2); echo "\n"; $res1 = (current($tab2) - prev($tab2))/2; next($tab2); $res65 = current($tab2) - $res1; $res3 = (next($tab2) - prev($tab2))/2; $res4 = current($tab2) + $res3; echo "plus petit: ".$res65; echo"\n"; echo "plus grand: ".$res4; echo "\n"; echo "\n"; next($tab2); echo current($tab2); echo "\n"; $res1 = (current($tab2) - prev($tab2))/2; next($tab2); $res65 = current($tab2) - $res1; $res3 = (next($tab2) - prev($tab2))/2; $res4 = current($tab2) + $res3; echo "plus petit: ".$res65; echo"\n"; echo "plus grand: ".$res4; echo "\n"; echo "\n"; echo "\n"; next($tab2); echo current($tab2); echo "\n"; $res1 = (current($tab2) - prev($tab2))/2; next($tab2); $res65 = current($tab2) - $res1; $res3 = (next($tab2) - prev($tab2))/2; $res4 = current($tab2) + $res3; echo "plus petit: ".$res65; echo"\n"; echo "plus grand: ".$res4; echo "\n"; echo "\n"; echo "\n"; next($tab2); echo current($tab2); echo "\n"; $res1 = (current($tab2) - prev($tab2))/2; next($tab2); $res65 = current($tab2) - $res1; $res3 = (next($tab2) - prev($tab2))/2; $res4 = current($tab2) + $res3; echo "plus petit: ".$res65; echo"\n"; echo "plus grand: ".$res4; echo "\n"; echo "\n"; next($tab2); echo current($tab2); echo "\n"; $res1 = (current($tab2) - prev($tab2))/2; next($tab2); $res65 = current($tab2) - $res1; $res3 = (next($tab2) - prev($tab2))/2; $res4 = current($tab2) + $res3; echo "plus petit: ".$res65; echo"\n"; echo "plus grand: ".$res4; echo "\n"; echo "\n"; next($tab2); echo current($tab2); echo "\n"; $res1 = (current($tab2) - prev($tab2))/2; next($tab2); $res65 = current($tab2) - $res1; $res3 = (next($tab2) - prev($tab2))/2; $res4 = current($tab2) + $res3; echo "plus petit: ".$res65; echo"\n"; echo "plus grand: ".$res4; echo "\n"; //Fin des blocs de code servant à connaitre les nombres les plus proches ?>
A voir également:
- Afficher les nombres qui sont égales au ratio
- Afficher appdata - Guide
- Excel afficher les 0 devant un nombre - Guide
- Afficher les commentaires word - Guide
- Afficher les modifications word - Guide
- Afficher taille dossier windows - Guide
4 réponses
Bonjour,
Ceci correspondrai à tes besoins ?
Ceci correspondrai à tes besoins ?
<?php //Fonctions function getClosest($search, $arr) { $closest = null; foreach ($arr as $item) { if ($closest === null || abs($search - $closest) > abs($item - $search)) { $closest = $item; } } return $closest; } //Début des tableaux utilisés pour calculer toute les possibilités de ratio possible $gear1 = [1, 2, 3]; $gear2 = [1, 2, 3]; $gear3 = [1, 2, 3]; $gear4 = [1, 2, 3]; $recherche = 0.41666666666666; $resultats = array(); $debug = array(); foreach($gear4 as $k4=>$v4){ foreach($gear3 as $k3=>$v3){ foreach($gear2 as $k2=>$v2){ foreach($gear1 as $k1=>$v1){ $calc = ($v1/$v2)*($v3/$v4); $resultats [] = $calc; $debug[] = array('calc'=>$calc,'valeurs'=>array($v1,$v2,$v3,$v4)); } } } } sort($resultats); $valPlusProche = getClosest($recherche,$resultats); echo "<br> Valeur cherchée : " . $recherche; echo "<br>Plus proche résultat : " . $valPlusProche; echo"<pre>"; print_r($debug); echo"</pre>";
Bonjour,
Ceci répond exactement à mes besoins, par contre, dans mes tableaux $gear, je ne vais pas seulement avoir trois valeur, je vais en avoir 125, donc est-ce qu'il y a des modification à faire ou non? De plus, je sais qu'il y a une limite dans les tableaux en PHP, donc est-ce qu'il y aura un impact ou non?
Merci
Ceci répond exactement à mes besoins, par contre, dans mes tableaux $gear, je ne vais pas seulement avoir trois valeur, je vais en avoir 125, donc est-ce qu'il y a des modification à faire ou non? De plus, je sais qu'il y a une limite dans les tableaux en PHP, donc est-ce qu'il y aura un impact ou non?
Merci
Bonjour,
Ceci répond exactement à mes besoins, par contre, dans mes tableaux $gear, je ne vais pas seulement avoir trois valeur, je vais en avoir 125, donc est-ce qu'il y a des modification à faire ou non? De plus, je sais qu'il y a une limite dans les tableaux en PHP, donc est-ce qu'il y aura un impact ou non?
Merci
Ceci répond exactement à mes besoins, par contre, dans mes tableaux $gear, je ne vais pas seulement avoir trois valeur, je vais en avoir 125, donc est-ce qu'il y a des modification à faire ou non? De plus, je sais qu'il y a une limite dans les tableaux en PHP, donc est-ce qu'il y aura un impact ou non?
Merci
Quelqu'un pourrait m'aider?
Il me marque une erreur disant que le tableau $debug est trop chargé.
Voici mon nouveau code :
Il me marque une erreur disant que le tableau $debug est trop chargé.
Voici mon nouveau code :
<?php //Début de la fonction pour trouver le ratio le plus proche function getClosest($search, $arr) { $closest = null; foreach ($arr as $item) { if ($closest === null || abs($search - $closest) > abs($item - $search)) { $closest = $item; } } return $closest; } //Fin de la fonction pour trouver le ratio le plus proche //Début des tableaux $gear1 = [20, 20, 22, 23, 24, 24, 25, 26, 26, 29, 29, 30, 30, 31, 32, 33, 34, 35, 36, 36, 36, 36, 37, 39, 40, 41, 42, 43, 44, 45, 45, 46, 46, 47, 48, 48, 49, 50, 50, 51, 52, 53, 55, 55, 56, 57, 58, 59, 60, 60, 61, 62, 63, 65, 66, 67, 69, 70, 71, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 83, 85, 87, 89, 89, 90, 91, 92, 93, 93, 95, 97, 98, 99, 100, 101, 103, 103, 107, 109, 111, 113]; $gear2 = [20, 20, 22, 23, 24, 24, 25, 26, 26, 29, 29, 30, 30, 31, 32, 33, 34, 35, 36, 36, 36, 36, 37, 39, 40, 41, 42, 43, 44, 45, 45, 46, 46, 47, 48, 48, 49, 50, 50, 51, 52, 53, 55, 55, 56, 57, 58, 59, 60, 60, 61, 62, 63, 65, 66, 67, 69, 70, 71, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 83, 85, 87, 89, 89, 90, 91, 92, 93, 93, 95, 97, 98, 99, 100, 101, 103, 103, 107, 109, 111, 113]; $gear3 = [20, 20, 22, 23, 24, 24, 25, 26, 26, 29, 29, 30, 30, 31, 32, 33, 34, 35, 36, 36, 36, 36, 37, 39, 40, 41, 42, 43, 44, 45, 45, 46, 46, 47, 48, 48, 49, 50, 50, 51, 52, 53, 55, 55, 56, 57, 58, 59, 60, 60, 61, 62, 63, 65, 66, 67, 69, 70, 71, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 83, 85, 87, 89, 89, 90, 91, 92, 93, 93, 95, 97, 98, 99, 100, 101, 103, 103, 107, 109, 111, 113]; $gear4 = [20, 20, 22, 23, 24, 24, 25, 26, 26, 29, 29, 30, 30, 31, 32, 33, 34, 35, 36, 36, 36, 36, 37, 39, 40, 41, 42, 43, 44, 45, 45, 46, 46, 47, 48, 48, 49, 50, 50, 51, 52, 53, 55, 55, 56, 57, 58, 59, 60, 60, 61, 62, 63, 65, 66, 67, 69, 70, 71, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 83, 85, 87, 89, 89, 90, 91, 92, 93, 93, 95, 97, 98, 99, 100, 101, 103, 103, 107, 109, 111, 113]; //Fin des tableaux //Début de la variable où est logé le nombre recherché $recherche = 0.44444444444444 ; //Fin de la variable où est logé le nombre recherché //Début des calculs des ratios $resultats = array(); $debug = array(); foreach($gear4 as $k4=>$v4){ foreach($gear3 as $k3=>$v3){ foreach($gear2 as $k2=>$v2){ foreach($gear1 as $k1=>$v1){ $calc = ($v1/$v2)*($v3/$v4); $resultats [] = $calc; $debug[] = array('calc'=>$calc, 'valeurs'=>array($v1,$v2,$v3,$v4)); } } } } //Fin des calculs des ratios //Début affichage du nombre rechercher et du nombre le plus proche du nombre rechercher sort($resultats); $valPlusProche = getClosest($recherche,$resultats); echo "<br> Valeur cherchée : " . $recherche; echo "<br>Plus proche résultat : " . $valPlusProche; //Fin affichage du nombre rechercher et du nombre le plus proche du nombre rechercher echo"<pre>"; //Début affichage du tableau echo "\n"; echo"</pre>"; //Fin affichage du tableau ?>