Написать программу в Паскале, которая определяет сумму натуральных чисел кратных 3 и оканчивающихся на 6. Последнее число последовательности 0. Количество чисел не превышает 1000. Количество введённых чисел неизвестно.
Написать программу в Паскале, которая определяет сумму натуральных чисел кратных 3 и оканчивающихся на 6. Последнее число последовательности 0. Количество чисел не превышает 1000. Количество введённых чисел неизвестно.
Ответ(ы) на вопрос:
Гость
uses crt;
var n, i, s: integer;
a: array [1..1000] of integer;
begin writeln('Введите количество чисел последовательности');
read(n);
s := 0;
writeln('Введите числа');
for i := 1 to n do
begin
read(a[i]);
a[n] := 0;
end;
writeln();
for i := 1 to n do
write(a[i], ' ');
writeln();
for i := 1 to n do
s := s + a[i];
writeln('Сумма=', s);
end.
Гость
Поскольку тут речь о последовательности неизвестной длины, вводимой с клавиатуры до появления нуля, а условие позволяет для каждого вводимого числа сразу решить, должно ли оно входить в сумму, задача решается без использования массива и условие "Количество чисел не превышает 1000" - это просто ловушка для наивных с тем, чтобы в случае использования массива длиной 1000 объявить затем решение неэффективным по памяти.
1. Решение на современной версии Паскаля
PascalABC.NET 3.2, сборка 1389 от 01.03.2017
Внимание! Если программа не работает, обновите версию!
begin
var s:=ReadSeqIntegerWhile(n->n<>0)
.Where(n->(n mod 3=0) and (n mod 10=6)).Sum;
Writeln('Сумма отобранных чисел равна ',s)
end.
Пример
15 36 26 72 25 96 83 0
Сумма отобранных чисел равна 132
2. Решение "по-школьному"
var
n,s:integer;
begin
s:=0;
repeat
Read(n);
if (n mod 3=0) and (n mod 10=6) then s:=s+n
until n=0;
Writeln('Сумма отобранных чисел равна ',s)
end.
Пример
15 36 26 72 25 96 83 0
Сумма отобранных чисел равна 132
Не нашли ответ?
Похожие вопросы