using System; using System.Linq; namespace restless { class Program { static double Average(double[] arr) { double _sum = 0; for (int i = 0; i < arr.Length; i++) _sum += arr[i]; return _sum / arr.Length; } static Tuple SumProdToLastPositive(double[] arr) { double _sum = 0, _prod = 1; int i = arr.Length - 1; while(arr[i] <= 0) { i--; } for (int j = 0; j <= i; j++) { _sum += arr[j]; _prod *= arr[j]; } return Tuple.Create(_sum, _prod); } static double[] RemoveElements(double[] arr, double a, double b) { int startSize = arr.Length; var tmp = arr.Cast().ToList(); for (int i = 0; i < tmp.Count; i++) { if (arr[i] >= a && arr[i] <= b) { tmp.Remove(arr[i]); } } for (int i = 0; i < tmp.Count; i++) { arr[i] = tmp[i]; } for (int i = tmp.Count; i < startSize; i++) arr[i] = 0; return arr; } static void Main() { Random rnd = new Random(); double[] arr = new double[10]; Console.WriteLine("Введите элементы массива (каждый на новой строке): "); for (int i = 0; i < 10; i++) arr[i] = Convert.ToDouble(Console.ReadLine()); /*Для удобства проверки сделана генерация только целых чисел*/ Console.Write("Исходный массив: "); for (int i = 0; i < 10; i++) { Console.Write($"{arr[i]} "); } Console.WriteLine(); //функция, которая вернет нам среднее арифметическое Console.WriteLine($"Среднее арифметическое: {Average(arr)}"); //функция, которая вернет нам сумму и произведение элементов до последнего положительного Console.WriteLine($"Сумма и произведение до последнего положительного: {SumProdToLastPositive(arr)}"); /*Последняя функция возвращает массив, мы его запишем в переменную g, а затем выведем на экран. Хотя можно было передать массив с модификатором ref и изменять его, ну так тоже пойдёт. */ Console.Write("Изменённый массив после удаления элементов из промежутка [a, b]: "); var g = RemoveElements(arr, 2.0, 5.0); for (int i = 0; i < g.Length; i++) Console.Write(g[i] + " "); } } }