Помогите.
Нужно написать программу, которая в последовательности чисел определяет их сумму и количество чётных чисел, кратных 5. Программа получает на вход целые числа, количество введённых чисел неизвестно, последовательность чисел заканчивается числом 0(0 - признак окончания ввода, не входит в последовательность). Количество чисел не превышает 1000. Введённые числа по модулю не превышают 30 000. Программа должна вывести два числа: сумму последовательности и количество чётных чисел, кратных 5.
Пример работы программы:
Входные данные: 4, 60, 15, 0
Выходные данные: 79, 1
Нужно написать программу на языке Паскаль.
Plus9ToIntellect:
Тут паскаль, расходимся
Да, верхогляды могут быть свободны.
Ответы
Ответ дал:
2
Ответ:
//--- PascalABC.NET 3.6.2 ---//
begin
var S := ReadSeqIntegerWhile(p -> p <> 0).ToList;
S.Sum.Println;
S.Count(p -> (p mod 5 = 0) and (p mod 2 = 0)).Println;
end.
А как ограничить количество чисел и модуль введённых чисел?
Если вам нужно вводить числа не до символа окончания ввода, а какое то конкретное кол-во, используйте функцию ReadSeqInteger(n), возвращающую последовательность целых чисел, введённых с клавиатуры, определённой длины
Если вам нужно, что бы оно в процессе ещё и проверяло модуль числа на соответствие диапазону, то вероятнее всего придётся пилить подобный ввод самостоятельно, без встроенных функций
Спасибо
Ну а если вы хотите, что бы можно было вводить числа до 0, но при этом не больше (или не меньше) какого либо кол-ва, и что бы оно и при этом ещё проверяло модуль каждого вводимого числа, то тут железно придётся сочинять что то самому, такого в стандартной библиотеке я не наблюдал
Ясно. Спасибо. Буду искать что-то по этому поводу.
Да это фантазии. В школьных задачах безусловно предполагается, что входные данные подаются с ограничениями, указанными в задании, поэтому никакие проверки не требуются, если этого не сказано явно.
Ответ дал:
2
// PascalABC.NET
begin
var (s, k) := (0, 0);
foreach var n in ReadSeqIntegerWhile(p -> p <> 0) do
begin
s += n;
if n.IsEven and (n mod 5 = 0) then Inc(k)
end;
Print('Сумма', s, ' количество', k)
end.
Эффективное решение, не требующее запоминания введенных значений.
А как ограничить количество чисел и модуль введённых чисел?
Зачем?
Фразы "Количество чисел не превышает 1000. Введённые числа по модулю не превышают 30 000. " даются, чтобы правильно выбрать тип данных, а не для того, чтобы контролировать что-то.
Вас заинтересует
2 года назад
2 года назад
2 года назад
2 года назад
7 лет назад
7 лет назад
9 лет назад