Ребят помогите!! Паскаль Напишите программу, которая в последовательности целых чисел...

0 голосов

Ребят помогите!! Паскаль Напишите программу, которая в последовательности целых чисел определяет разность количества четных и нечетных чисел. Программа получает на вход числа последовательности, условием остановки является ввод числа 0. Количество чисел заранее неизвестно, но не превышает 1000. Введённые числа по модулю не превышают 30 000. Программа должна вывести одно число — разность количества четных и нечетных чисел.


спросил от (45 баллов) в категории Информатика
2 Ответы
0 голосов
ответил от Одаренный (1.6k баллов)

Ответ:

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.

оставил комментарий от Одаренный (1.6k баллов)

.ToList выдает в решении ярого питонщика, так и не научившегося работать с последовательностями.

оставил комментарий от Одаренный (1.6k баллов)

Не вижу тут ничего зазорного, приводить последовательность к листу и далее работать уже с объектом, поведение которого куда более очевидно и предсказуемо. Не под спутник космический мозги пишем, авось у человека, который будет это запускать найдётся пару десятков лишних байт памяти

оставил комментарий от Одаренный (1.6k баллов)

А тут нет нужды вообще хранить вводимые данные, алгоритм же однопроходный.

оставил комментарий от Одаренный (1.6k баллов)

Речь вовсе не о том, что используется List вместо Array, хотя и List идеологически тут не нужен, поскольку нет множественного удаления или добавления элементов.

оставил комментарий от Одаренный (1.6k баллов)

Если бы так решать в ЕГЭ (так нет таких задач, я о принципах) - это сразу минус балл за неэффективность.

0 голосов
ответил от Одаренный (1.6k баллов)

// PascalABC.NET

begin

   var diff := 0;

   ReadSeqIntegerWhile(p -> p <> 0)

       .Foreach(p -> begin diff += p.IsOdd ? -p : p end);

   diff.Print

end.

...