je viens vous demander de m'aider car là je bloque un peu.
Je travaille sur un calcul de frais de port et voici l'algorithme que je n'arrive à traduire en php :
<?
// ========== EXPLICATION DE L'ALGORITHME ================
/*****************************************************************
* Tant que le poids restant est > 10KG
* On classe le poids des articles par ordre décroissant
* On fait des paquets de 10KG en partant du poids le plus élevé (n)
* Ensuite, on prend l'article dont le poids est juste aud essus (plus léger, n-1
* Si avec cet article (n-1), on peut faire un article de max 10kg,
* alors on l'ajoute au colis
* On regarde ensuite si on peut ajouter l'article n-2, n-3, n-n...
* Sinon, si on ne peut ajouter l'article ?
* alors on regarde si on peut ajouter l'article n-2, si on peut pas n-3... n-n
******************************************************************/
?>
Et de mon côté voici le code que j'ai fait pour l'instant arpès de nombreux essais.<?
echo "nbre articles : ".count($nb_article_moins_10)."<br />";
for($i=0; $i<count($nb_article_moins_10); $i++){
echo "poids article : ".$nb_article_moins_10[$i]['poids']."<br />";
echo "qte article : ".$nb_article_moins_10[$i]['quantite']."<br />";
$qte_article = $nb_article_moins_10[$i]['quantite'];
for($j=0; $j<=$qte_article; $j++){
$poids_colis += str_replace(",",".",$nb_article_moins_10[$i]['poids']);
if($poids_colis > 10){
$poids_colis -= str_replace(",",".",$nb_article_moins_10[$i]['poids']);
break;
}
else{
$nb_article_moins_10[$i]['poids']--;
}
echo $poids_colis;
}
}
?>
Ici nb_article_moins_10 est un tableau dans lequel se trouve les produits dont le poids est < 10 kg et la quantité commandée de ces produits.Ce que je dois faire, c'est calculer un frais de port en répartissant les articles dans des colis de 10kg maximum.
Sachant que :
un article de 7 kg et deux articles de 3,5kg = 2 colis de 7kg
deux articles de 8 kg = 2 colis de 8kg
4 articles de 2 kg plus 1 article de 1.5kg = 1 colis de 9.5kg...
Pouvez vous m'aidez ?
Voici un code que j'avais fait auparavant mais qui ne correspondait pas puisqu'avaec ce code on aait :
un article de 7 kg et deux articles de 3,5kg = 1 colis de 10kg et un colis de 0.5kg
<?
// ANCIEN CODE QUI NE FONCTIONNE PAS :
$nb_colis_10_kg = floor($poids_restant/10);
connexion();
$tnt = mysql_query("SELECT * FROM frais_port WHERE port_a > 10 AND port_de <= 10") or die(mysql_error());
$res_tnt = mysql_fetch_array($tnt);
$resultat_fp2 += $res_tnt['tarif_z'.$zone];
$poids_restant = ($poids_restant - (10*$nb_colis_10_kg)); //le nouveau poids restant = poids restant - poids de tous les colis de 10kg qu'on a pu faire
deconnexion();
// FIN DE ANCIEN CODE
?>