Задача 5 Урок 12.1

Задача 5 Урок 12.1

Решите с помощью цикла repeat/until:
Выведите на экран, все четные числа от 35 до 117 и нечетные числа, делящиеся на 7 и 3 нацело и при этом лежащие в диапазоне от 45 до 99.
Указание: сначала можно решить задачу двумя циклами, но потом перепишите с использованием одного цикла, в теле которого составьте логическое выражение, описывающее подходящие числа (используйте логические операции).

// 2мя циклами
var   i, k: integer;
begin
  i := 35;
  k := 45;

  repeat
  if((i mod 2) = 0) then
    write(i,' ');
    i := i + 1;
  until(i = 117);

  writeln();
  writeln();

  repeat
  if(((k mod 2) <> 0) and ((k mod 3) = 0) and ((k mod 7) = 0)) then
    write(k,' ');
    k := k + 1;
  until(k = 99);

  readln();
end. 
// 1 цикл
var   i: integer;
begin
  i := 35;
  repeat
  if((i mod 2) = 0) then
    write(i,' ');
  if(((i mod 2) <> 0) and ((i mod 3) = 0) and ((i mod 7) = 0) and (i > 45) and (i < 99)) then
    write(i,' ');
    i := i + 1;
  until(i = 117);
  readln();
end. 
vedro-compota's picture

уточнить оптимальность проверок в теле цикла (if else)

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

// 1 цикл
var   i: integer;
begin
  i := 35;
  repeat
    if((i mod 2) = 0) then
      write(i,' ')
    else
    if(((i mod 2) <> 0) and ((i mod 3) = 0) and ((i mod 7) = 0) and (i > 45) and (i < 99)) then
      write(i,' ');
    i := i + 1;
  until(i = 117);
  readln();
end. 
vedro-compota's picture

есть лишнее логическое подвыражение

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

// 1 цикл
var   i: integer;
begin
  i := 35;
  repeat
    if((i mod 2) = 0) then
      write(i,' ')
    else
    if(((i mod 3) = 0) and ((i mod 7) = 0) and (i > 45) and (i < 99)) then
      write(i,' ');
    i := i + 1;
  until(i = 117);
  readln();
end.    
vedro-compota's picture

решение засчитано

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