Решение задачи №3 из главы 11

Задача №3 из главы 11

Решите с помощью цикла while:
Выведите на экран, все нечетные числа, делящиеся на 3 нацело, лежащие в диапазоне от 35 до 117.

var i:integer;
begin
  i := 35; // начальное значение счетчика(диапозона)
  while i <= 117 do //проверка выражения
  begin
    i:=i + 1;  //задаем шаг
    if (i mod 3) = 0 then   //если делиться на 3 нацело
      write(i, ' '); // выводим в одну строку с пробелом
  end;
  readln();
end.   
vedro-compota's picture

35 у вас вообще не проверяется, сразу начинаете с 36 -- это опасно в общем случае. Исправьте.

_____________
матфак вгу и остальная классика =)

gani84's picture

35 на 3 не делиться нацело поэтому он и отбрасывается!!! т.е невыполняется условие

if (i mod 3) = 0 then   //если делиться на 3 нацело
      write(i, ' ');

Поэтому он его и откидывает

vedro-compota's picture

нет, не "он его откидывает", а ваша программа проверяет первое число 36, поэтому:

  • 1) ответьте почему это так (почему 36 а не 35 -- внимательно посморите на свой код)
  • 2) исправьте решение.

_____________
матфак вгу и остальная классика =)

gani84's picture

Так как мы увеличиваем на +1 сразу то мы должны начать отсчет от 34

var i:integer;
begin
  i := 34; // начальное значение счетчика (диапазона)
  while i <= 117 do //проверка выражения
  begin
    i:=i + 1;  //задаем шаг
    if (i mod 3) = 0 then   //если делиться на 3 нацело
      write(i, ' '); // выводим в одну строку с пробелом
  end;
  readln();
end.