Ребят помогите!! Паскаль Напишите программу, которая в последовательности целых чисел определяет разность количества четных и нечетных чисел. Программа получает на вход числа последовательности, условием остановки является ввод числа 0. Количество чисел заранее неизвестно, но не превышает 1000. Введённые числа по модулю не превышают 30 000. Программа должна вывести одно число — разность количества четных и нечетных чисел.
Ответ:
PascalABC.NET 3.6.2
begin
var S := ReadSeqIntegerWhile(p -> p <> 0).ToList;
var odd := S.Where(p -> p mod 2 <> 0).Count;
var even := S.Where(p -> p mod 2 = 0).Count;
var diff := abs(even - odd);
diff.Println;
end.
.ToList выдает в решении ярого питонщика, так и не научившегося работать с последовательностями.
Не вижу тут ничего зазорного, приводить последовательность к листу и далее работать уже с объектом, поведение которого куда более очевидно и предсказуемо. Не под спутник космический мозги пишем, авось у человека, который будет это запускать найдётся пару десятков лишних байт памяти
А тут нет нужды вообще хранить вводимые данные, алгоритм же однопроходный.
Речь вовсе не о том, что используется List вместо Array, хотя и List идеологически тут не нужен, поскольку нет множественного удаления или добавления элементов.
Если бы так решать в ЕГЭ (так нет таких задач, я о принципах) - это сразу минус балл за неэффективность.
// PascalABC.NET
var diff := 0;
ReadSeqIntegerWhile(p -> p <> 0)
.Foreach(p -> begin diff += p.IsOdd ? -p : p end);
diff.Print