Étant donné une quantité en ml et 3 tailles de paquet (20ml, 200ml et 1000ml), je voudrais calculer combien de chaque pack sont nécessaires pour remplir le montant total.Bonne mise en œuvre d'un calculateur de changement en C#
E.g.
Amount =ml
1000ml = 3 packs
200ml = 1 pack
20ml = 1 pack (always round up to nearest quantity)
C'est à peu près comme une calculatrice de changement, et je suis à la recherche de la bonne façon de le faire.
Voilà ma tentative
public class PackSizeCalculator
{
private const int LargePackSize = 1000;
private const int MediumPackSize = 200;
private const int SmallPackSize = 20;
public int LargePacks {get; set;}
public int MediumPacks {get; set;}
public int SmallPacks {get; set;}
public PackSizeCalculator(int amount)
{
int remainder = amount;
while(remainder > 0) {
if(remainder >= LargePackSize)
{
LargePacks = remainder/LargePackSize;
remainder = remainder % LargePackSize;
}
else if(remainder >= MediumPackSize)
{
MediumPacks = remainder/MediumPackSize;
remainder = remainder % MediumPackSize;
}
else if(remainder > SmallPackSize)
{
if(remainder % SmallPackSize == 0)
{
SmallPacks = (remainder/SmallPackSize);
}
else {
SmallPacks = (remainder/SmallPackSize) + 1;
}
remainder = 0;
}
else {
SmallPacks = 1;
remainder = 0;
}
}
}
}
Est-ce une bonne façon de s'y prendre ou recommanderiez-vous quelque chose de différent?
Veuillez poster le code que vous avez écrit jusqu'ici. –
Il n'y a pas de bonne façon de le faire. Votre "question" ressemble plus à "S'il vous plaît faites-le pour moi". C'est l'externalisation du cerveau ... Vous cherchez un algorithme, pas vraiment un problème de programmation/code technique. C'est peut-être peut-être un signe de paresse boiteuse comme vous devriez au moins présenter vos alternatives pré-réflexion/algo que vous pensiez. –
Très bien, je pensais utiliser des instructions if et utiliser le reste de chaque division, donc je vais poster ça maintenant. Donne moi 5 minutes. – Marko