mercredi 27 novembre 2024

commande de macarons: public static int ComputeTotalPrice(float unitPrice, string[] macarons)

 ecrire un programe calcul le prix d'une commande de macarons. Chque macaron a le meme prix unitaire(donne en input) chaque macaron a une saveur spécifique. Il existe au max 5 saveur différents parmi tous les macarons. Une commande comprend un ou plusieurs lots. Un lot peut contenir jusqua 5 macarons mais ne peut pas contenir des macarons de meme saveur. cherche toujours a remplir les lots de 5 au maximum. L'ordre des macaron dans un lot est sans incidence, et l'ordre des lots entre eux est également sans incidence. reduction en fonction du nombre de saveur diff par lot: 2 saveurs diff dans lot = -10% sur le prix du lot; 3 saveurs diff = -20%; 4 saveur diff = -30%; 5 saveurs diff = -40% sur le prix du lot. Implementer function public static int ComputeTotalPrice(float unitPrice, string[] macarons) , prend en parametres unitPrice, le prix d'un macaron, et macarons est un table de chaines de carateres representant les differentes saveurs. Retourne le prix total de la commande sous forme d'un entier arrondi à l'entier inférieur



using System;

using System.Collections.Generic;

using System.Linq;


public class Program

{

    public static int ComputeTotalPrice(float unitPrice, string[] macarons)

    {

        // Comptage des saveurs de macarons

        Dictionary<string, int> flavorCount = new Dictionary<string, int>();

        foreach (string macaron in macarons)

        {

            if (flavorCount.ContainsKey(macaron))

                flavorCount[macaron]++;

            else

                flavorCount[macaron] = 1;

        }


        // Créer des lots en maximisant le nombre de saveurs distinctes

        List<List<string>> lots = new List<List<string>>();

        

        // Continuer à remplir les lots tant qu'il reste des macarons

        while (flavorCount.Values.Any(count => count > 0))

        {

            List<string> currentLot = new List<string>();


            // Essayer de remplir le lot avec des saveurs différentes

            foreach (var flavor in flavorCount.Keys.ToList())

            {

                if (currentLot.Count < 5 && flavorCount[flavor] > 0)

                {

                    currentLot.Add(flavor);

                    flavorCount[flavor]--;

                }

                if (currentLot.Count == 5) break;  // Un lot ne peut contenir plus de 5 macarons

            }


            lots.Add(currentLot); // Ajouter le lot rempli à la liste des lots

        }


        // Calculer le prix total

        float totalPrice = 0;

        foreach (var lot in lots)

        {

            int uniqueFlavorsCount = lot.Distinct().Count(); // Nombre de saveurs uniques dans le lot

            float lotPrice = unitPrice * lot.Count; // Prix sans réduction pour le lot


            // Appliquer la réduction en fonction du nombre de saveurs différentes dans le lot

            if (uniqueFlavorsCount == 2)

                lotPrice *= 0.9f; // 10% de réduction

            else if (uniqueFlavorsCount == 3)

                lotPrice *= 0.8f; // 20% de réduction

            else if (uniqueFlavorsCount == 4)

                lotPrice *= 0.7f; // 30% de réduction

            else if (uniqueFlavorsCount == 5)

                lotPrice *= 0.6f; // 40% de réduction


            totalPrice += lotPrice;

        }


        // Retourner le prix total arrondi à l'entier inférieur

        return (int)Math.Floor(totalPrice);

    }


    public static void Main()

    {

        // Exemple d'utilisation

        float unitPrice = 2.5f; // Prix unitaire d'un macaron

        string[] macarons = { "vanilla", "chocolate", "strawberry", "vanilla", "chocolate", "raspberry", "lemon", "vanilla" };


        int totalPrice = ComputeTotalPrice(unitPrice, macarons);

        Console.WriteLine($"Le prix total de la commande est : {totalPrice} €");

    }

}


Aucun commentaire:

Enregistrer un commentaire