sOwlO Ответов: 2

Средняя зарплата в массиве


Я совершенно новичок в программировании. Занимаюсь этим около недели или около того. Я не могу найти никакой практической помощи в google, yt и т. д. (Я нашел что-то только в Java и не могу переписать его на c#).

1) я должен спросить пользователя, сколько сотрудников работает в компании.
2) пользователь пишет конкретные зарплаты.
3) Программа показывает ему среднюю зарплату и зарплаты, которые выше среднего.

Я просто не могу понять, как найти среднюю зарплату. Я пробовал много вариантов, и ни один из них не сработал.

Мой код выглядит примерно так:

namespace AvgSalary
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Number of employees: ");
            int employees = int.Parse(Console.ReadLine());
            int[] salaryArray = new int[employees];
            for (int i = 0; i < employees; i++)
            {
                Console.WriteLine("{0}. salary of employee: ", i + 1);
                salaryArray[i] = int.Parse(Console.ReadLine());
            }

            Console.ReadKey();
        }
    }
}


Что я уже пробовал:

int avg = salaryArray[i] / сотрудники;
Приставка.WriteLine("средняя зарплата: {0}", avg);

И многое другое. Я читал о .average(), но он не работает.

F-ES Sitecore

Среднее значение-это сумма всех значений, деленная на количество значений. Таким образом, вы должны сложить каждый элемент в salaryArray, а затем разделить эту сумму на количество элементов внутри salaryArray. Вы можете получить сумму, прокручивая каждое значение в массиве и добавляя его к переменной "sum", а количество элементов получается из salaryArray.Длина.

2 Ответов

Рейтинг:
20

OriginalGriff

Подумайте о том, что такое среднее значение: это сумма всех значений, деленная на число значений.
Итак, если у вас есть 4 значения: 1, 2, 6, 7, то среднее значение равно (1 + 2 + 6 + 7) / 4, или 16 / 4, что равно 4.

Таким образом, вам нужно либо сгенерировать текущую сумму в вашем цикле, пока пользователь вводит их, и разделить после цикла, либо добавить второй цикл, чтобы сгенерировать общую сумму после добавления записей.

Я бы также предложил - довольно сильно - чтобы вы использовали int.TryParse вместо int.Parse. Последний создает исключение, когда пользователь вводит что-либо, что не является допустимым целочисленным значением, в то время как первый возвращает a true / false значение, указывающее на успех / неудачу.

for (int i = 0; i < employees; i++)
    {
    int value = 0;
    while (!int.TryParse(Console.ReadLine(), out value))
       {
       Console.Writeline("Please enter a valid integer only");
       }
    ...
    }
И мы все знаем, что все совершают ошибки! Это довольно раздражает, чтобы ошибиться при входе в 99-ю зарплату и иметь сбой программы!


CPallini

5.

Рейтинг:
1

George Swan

Вы можете просто добавить значения в a List а потом использовать Average метод расширения для получения среднего значения.

List<int> salaries = new List<int> { 1, 4, 5, 2 };
salaries.Add(8);
double  averageSalary = salaries.Average();


Richard Deeming

То Average метод расширения работает для любого IEnumerable<int>, так что он будет работать с массивом так же хорошо, как и с List<int>. :)