Найти номер пассажира, в багаже которого средний вес одной вещи отличается от общего среднего веса одной вещи не более чем на 0,5 кг

Напишите пожалуйста пункт г), LINQ не использовать.

Известна информация о багаже (количество вещей и общий вес багажа) 10 пассажиров.

а) Найти число пассажиров, имеющих более двух вещей.

б) Отсортировать список пассажиров по общему весу багажа.

в) Найти число пассажиров, у которых количество вещей превосходит среднее число вещей всех пассажиров.

г) Найти номер пассажира, в багаже которого средний вес одной вещи отличается от общего среднего веса одной вещи не более чем на 0,5 кг.

    struct Baggage
{
    public int passengernumber;
    public double weight;
    public double quantity;

    public Baggage(int p, double w, double q)
    {
        double W = Convert.ToDouble(w);
        passengernumber = p; weight = w; quantity = q;

    }
    public void DisplayInfo()
    {
        Console.WriteLine($"passengernumber={passengernumber}  weight={weight} quantity={quantity}");
    }
}

class Program
{
    static void Main(string[] args)
    {
        Baggage[] number = new Baggage[10];
        {
            number[0] = new Baggage(1, 9, 4);
            number[1] = new Baggage(2, 7, 1);
            number[2] = new Baggage(3, 1, 23);
            number[3] = new Baggage(4, 18, 3);
            number[4] = new Baggage(5, 4, 21);
            number[5] = new Baggage(6, 7, 6);
            number[6] = new Baggage(7, 1, 18);
            number[7] = new Baggage(8, 7, 1);
            number[8] = new Baggage(9, 4, 6);
            number[9] = new Baggage(10, 12, 2);
        };


        int neededCount = 0;
        for (int i = 1; i < number.Length; i++)
            if (number[i].quantity > 2)
                neededCount++;
        Console.WriteLine("а) Число пассажиров, имеющих более двух вещей: " + neededCount.ToString());

        double temp;
        for (int i = 0; i < number.Length - 1; i++)
        {
            for (int j = i + 1; j < number.Length; j++)
            {
                if (number[i].weight > number[j].weight)
                {
                    temp = number[i].weight;
                    number[i].weight = number[j].weight;
                    number[j].weight = temp;
                }
            }
        }

        Console.WriteLine("б) Отсортировать список пассажиров по общему весу багажа: ");
        for (int i = 0; i < number.Length; i++)
        {
            Console.WriteLine(number[i].weight);
        }


        double totalQuantity = 0;
        for (int i = 0; i < number.Length; i++)
        {
            totalQuantity += number[i].quantity;
        }
        int passengernumber = 0;

        for (int i = 0; i < number.Length; i++)
        {
            if (number[i].quantity > totalQuantity / number[i].quantity)
            {
                passengernumber++;
            }
        }
        Console.WriteLine("в) Число пассажиров, у которых количество вещей превосходит среднее число вещей всех пассажиров: {0}", passengernumber);


        //Напишите пункт г) пожалуйста
        double sumWeight = 0;
        double sumQuantity = 0;
        for (int i = 0; i < number.Length; i++)
        {
            sumWeight += number[i].weight;
        }
        for (int i = 0; i < number.Length; i++)
        {
            sumQuantity += number[i].quantity;
        }
        double AverageWeight = 0;
        for (int i = 0; i < number.Length; i++)
        {
            AverageWeight = sumWeight / sumQuantity;

            Console.WriteLine(AverageWeight);
            //продолжить

        }
    }
}

}


Ответы (1 шт):

Автор решения: Александр ДД

Вот, без Linq:

        List<Baggage> baggages = new List<Baggage>()
        {
            new Baggage(1, 9, 4),
            new Baggage(2, 7, 1),
            new Baggage(3, 1, 23),
            new Baggage(4, 18, 3),
            new Baggage(5, 4, 21),
            new Baggage(6, 7, 6),
            new Baggage(7, 1, 18),
            new Baggage(8, 7, 1),
            new Baggage(9, 4, 6),
            new Baggage(10, 12, 2)
        };

        // а)
        int countPassMoreThanTwoBag = baggages.FindAll(wi => wi.Quantity > 2).Count;

        // б)
        baggages.Sort((b1, b2) => b1.Weight.CompareTo(b2.Weight));

        // в)
        double avgCount = 0;
        baggages.ForEach(b => avgCount += b.Quantity);
        avgCount /= baggages.Count;

        int countPassMoreThanAvg = baggages.FindAll(wi => wi.Quantity > avgCount).Count;

        // г)
        double averageWeight = 0;
        baggages.ForEach(b => averageWeight += b.Weight);
        averageWeight /= baggages.Count;

        int passId = baggages.Find(b => Math.Abs(b.Weight / b.Quantity - averageWeight) < 0.5).PassengerNumber;
→ Ссылка