Напишите программу, которая в последовательности натуральных чисел находит разность между минимальным числом, кратным 3 и оканчивающемуся на 4, и максимальным числом с теми же характеристиками. Гарантируется, хотя бы одно число, отвечающее указанным требованиям, в последовательности найдется. Программа получает на вход натуральные числа, количество введённых чисел неизвестно, последовательность чисел заканчивается числом 0 (0 – признак окончания ввода, не входит в последовательность). Количество чисел не превышает 1000. Введённые числа не превышают 30 000.
pascal
Объяснение:
var
n, min, max, zn: integer;
begin
min := 29994;
max := 0;
WriteLn('Введите числа (0 - для окончания):');
repeat
ReadLn(zn);
if (zn mod 10 = 4) and (zn mod 3 = 0) then
begin
if zn < min then min := zn;
if zn > max then max := zn;
end;
until zn = 0;
WriteLn('Максимальное число по условию ', max);
WriteLn('Минимальное число по условию ', min);
WriteLn('Разность равна ', max - min);
end.
// PascalABC.NET
begin
var (min, max) := (30001, -30001);
foreach var n in ReadSeqIntegerWhile(p -> p <> 0)
.Where(p -> (p mod 10 = 4) and (p mod 3 = 0)).Println do
begin
if n < min then
min := n;
if n > max then
max := n
end;
Print(min - max)
end.