begin
var n := ReadInteger('n =');
var a := ArrRandom(n, -10, 99);
a.Println;
a.TakeWhile(p -> p > 0).DefaultIfEmpty.Average.Println
end.
Объяснение:
TakeWhile(p -> p > 0) - отбирает элементы от начала до тех пор, пока условие p > 0 истинно, т.е. со значением, большим нуля.
DefaultIfEmpty - если первое же значение не положительно, результатом будет один элемент, равный нулю (нельзя найти среднее, если элементов не отобрано вообще, получим 0/0)
Average - находит среднее отобранных элементов
Static void Main(string[] args)
{
int count = 0;
Console.Write("Введите размерность массива: ");
int n = Convert.ToInt32(Console.ReadLine());
int[] mas = new int[n];
Console.WriteLine("Заполните массив: ");
for (int i = 0; i < n; i++)
{
Console.Write("\t{0} элемент массива: ", i + 1);
mas[i] = Convert.ToInt32(Console.ReadLine());
}
for (int i = 0; i < n; i++)
if (mas[i] > 0 && mas[i] \% 2 == 0)
count++;
Console.WriteLine("Из {0} элементов массива {1} элементов являются положительными четными",n,count);
Console.WriteLine("{0}\% элементов являются положительными четными", (double)count/n*100);
Console.ReadLine();
}