• Предмет: Информатика
  • Автор: danilbulantsev04
  • Вопрос задан 11 месяцев назад

Задача
С клавиатуры вводится последовательность натуральных чисел, оканчивающихся числом 0. Количество чисел в последовательности неизвестно.
Программа должна вывести на экран четные числа из этой последовательности, которые не меньше 50.

Помогите пожалуйста :(


Koljisto: Какой язык?
danilbulantsev04: паскаль

Ответы

Ответ дал: Koljisto
1

Begin

 var a := new Stack<integer>;

 var input:integer;

 Read(input);

 while(input<>0) do

 begin

   if (input mod 2 = 0) and (input > 50) then

     a.Push(input);

   Read(input);

 end;

 a.Println;

end.


BobbyFresnel: Ну вот чем этот Паскаль хорош, на нем алгоритм ложится в код прямо блоками.
BobbyFresnel: ReadSeqIntegerWhile(p -> p <> 0) - читаем с консоли целочисленные данные, пока не встретится ноль и закидываем результат в массив.
BobbyFresnel: Where(p -> p.IsEven and (p >= 50)) - фильтруем только те, что удовлетворяют условию
BobbyFresnel: Println - печатетм, что накопилось
BobbyFresnel: Наврал, ReadSeqIntegerWhile(p -> p <> 0) - читаем с консоли целочисленные данные, пока не встретится ноль и составляем из них последовательность. Не массив. Она не хранится, а прямиком топает на фильтр по одному элементу в затылочек. Как на конвейере.
BobbyFresnel: И получается один оператор в форме цепочки из трех вызовов
BobbyFresnel: Лябды тут рулят, конечно
BobbyFresnel: Лямбды
Koljisto: Да, код красивый и краткий. Благодарю за разъяснение
BobbyFresnel: "Обращайтесь!" ))
Ответ дал: BobbyFresnel
1

===== PascalABC.NET =====

begin

 ReadSeqIntegerWhile(p -> p <> 0).

   Where(p -> p.IsEven and (p >= 50)).Println

end.

Приложения:
Вас заинтересует