TransWikia.com

В методе Main должно быть только объявление массива и не более одной Int переменной

Stack Overflow на русском Asked on November 3, 2020

Дан одномерный массив. Найти среднее арифметическое его элементов. Вывести на экран только те элементы массива, которые больше найденного среднего арифметического. В методе Main должно быть только объявление массива и не более одной int переменной.

Код уже есть, не знаю как сделать вторую часть задания.

static void Main(string[] args)
{
    uint size;
    size = uint.Parse(Console.ReadLine());
    int[] arr = new int[size];
    float sum = 0.0f;
    for (uint i = 0; i < size; ++i)
    {
        arr[i] = int.Parse(Console.ReadLine());
        sum += arr[i];
    }

    sum /= size;
    for (uint i = 0; i < size; ++i)
    {
        if (arr[i] > sum)
        {
            Console.Write(arr[i]);
        }
    }

    Console.ReadKey();
}

One Answer

Можно с помощью Linq

static void Main(string[] args)
{
    int[] arr = new int[int.Parse(Console.ReadLine())].Select(x => int.Parse(Console.ReadLine())).ToArray();
            
    int sum = arr.Aggregate(0, (x, y) => x + y);

    Console.WriteLine(string.Join(" ", arr.Where(x => x > (float)sum / arr.Length)));
    Console.ReadKey();
}

А если по-простому, то вот так

static void Main(string[] args)
{
    int[] arr = new int[int.Parse(Console.ReadLine())];
    int sum = 0;
    for (int i = 0; i < arr.Length; ++i)
    {
        arr[i] = int.Parse(Console.ReadLine());
        sum += arr[i];
    }

    for (int i = 0; i < arr.Length; ++i)
    {
        if (arr[i] > (float)sum / arr.Length)
        {
            Console.Write(arr[i] + " ");
        }
    }

    Console.ReadKey();
}

Answered by aepot on November 3, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP