@SevaSava

Почему программа не выводит числа, которые делятся на 3 и на 5?

Дано: Напишите программу, вычисляющую сумму только тех чисел от 1 до N, которые делятся либо на 3, либо на 5.

Мой код:

program mod_3_5;
uses crt;
var n,sum,i: integer;
begin clrscr;
      writeln('Введите число N: ');
      readln(n);
      sum:=0;
      for i:=1 to N do
          begin
               if (i mod 3=0) or (i mod 5=0) then
               begin
                  sum:=sum+i;
                  writeln(sum);
               end

          end;
end.


Ввожу, например, число 5. Вроде логично, программа выводит числа 3 и 5 в качестве ответа. Ввожу число 10. Программа выводит следующее:

66785a821b7fa706364805.png

Где-то я напортачил. Помогите понять: в чём у меня ошибка?
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ответы на вопрос 2
@StiflerProger
Твой псевдокод выглядит так:

цикл N раз
 каждый этап цикла проверять деление на 3 или на 5?
  если Да, то добавить к сумме текущее число и ВЫВЕСТИ его на экран


соответственно у тебя прибавлятся до N = 10 так
sum := 0; при 3 добавляется 3 и пишется 3, при 5 добавляется к сумме уже 5 и пишется 8, потом добавляется и пишется 6, это 14, потом 9, это уже 23 ну и 10, это 33

по условию,, тебе просто нужно вынести твой writln за предел цикла, чтобы выводить уже всю сумму, а не каждый её этап
Ответ написан
Комментировать
vabka
@vabka
Токсичный шарпист
Почему программа не выводит числа, которые делятся на 3 и на 5?

Потому что она и не должна их выводить: ни по условию, ни по коду. В коде выводится только сумма чисел после того как найдено число, отвечающее условию.
В условии задачи - просят вывести сумму чисел, которые отвечают условию.

Дано: Напишите программу, вычисляющую сумму только тех чисел от 1 до N, которые делятся либо на 3, либо на 5.

По условию задачи нужно выводить сумму чисел, а не сами числа.
И не сумму в процессе вычисления.
Чтобы программа отвечала поставленным условиям - нужно writeln из цикла вытащить и выводить сумму после него.

При вводе 10 должно вывести 3+5+6+9+10=33, что и было выведено.

Чтобы выводило найденное число - добавь writeln(i) в тело условия.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы