1 5 2 3
Номера сетей или узлов (проще говоря, цифры, которые отделяет точка) должны быть не больше 256, следовательно и не могут быть 4х значными. Подбираем числа так, чтобы все сходилось
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 - находит среднее отобранных элементов
// PascalABC.NET 3.3
begin
var a:=ReadArrInteger('Введите год, месяц, число:',3);
Write('S=',a.Sum);
end.
Пример:
Введите год, месяц, число: 2018 3 14
S=2035
<h3>PascalABC.NET 3.4.2, сборка 1814 от 02.10.2018</h3>
function ReadWhileSum(cond: integer->boolean): sequence of integer;
begin
var s := 0;
while True do
begin
var x := ReadInteger();
s += x;
if not cond(s) then break;
yield x;
end;
end;
begin
Println('Сред. арифм. =',ReadWhileSum(sum -> sum < 150)
.Where(t->t.IsEven).Average);
end.