Уро 13.1 Задача 15

Уро 13.1 Задача 15

Пользователь вводит целое положительное число N большее или равное 8, если оно не соответствует этим критериям (то есть не является положительным и большим или равным 8), выведете сообщение об ошибке, в противном случае выведите на экран все числа последовательности, не большие N.
Например, для N=20 получим результат:

8 10 3 12 14 3 16 18 3 20
-- то есть всё начинается с восьмерки, затем число увеличивается на 2, затем выводится тройка и ещё пара увеличенных на 2 чисел и т.д. пока не дойдем до N.

Решение;

program Project1;
var m, a, N, x : integer;

begin
  write('Ввидите число больше 7: ');
  readln(N);
  m := 8;
  a := 0;
  if N < 8 then
    writeln('Опаньки ошибочка ')
  else
    for x := m to N do
    begin
      if (x mod 2 = 0) then
      begin
        a := a + 1;
        write(x, ' ');
      end
      else
        if (a = 2) then
        begin
          a := 0;
          write(3,' ');
        end;
    end;
  readln();
end.                
vedro-compota's picture

Можно упростить:

  • 1) Использовать цикл while
  • 2) сделать шаг =2

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

vedro-compota's picture

Добавить решение вложенными циклами

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

program Project1;


var N, m, x, a : integer;
begin
  m := 8;
  a := 0;
  writeln('Введите число больше 7:');
  readln(n);
  if n < 8 then
     writeln('Опаньки ошибочка')
  else
     repeat
       x := m;
       while (x <= N) do
         begin
            if m > N then
              break;
            write(m,' ');
            m := m + 2;
         end;
     write(3,' ');
     until m > N ;
  readln();
end.                       
vedro-compota's picture

Введите число больше 7:
24
8 10 12 14 16 18 20 22 24 3

-- не совпадает с оригинальным условием:

8 10 3 12 14 3 16 18 3 20

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

program Project1;
var n, a, x: integer;
begin
  writeln('Введите целое число больше 7');
  readln(n);

   a := 8;
   repeat
   begin
     for x:= 1 to 2 do
     begin
       if (a <= n) then
         write(a, ' ');
       a:= a + 2;
     end;
     if (a <= n) then
       write (3,' ');
   end;

   until x > n ;

  readln();

end.                            
vedro-compota's picture

repeat/until не нуждается в операторных скобках

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

program Project1;
var n, a, x: integer;
begin
  writeln('Введите целое число больше 7');
  readln(n);
 
   a := 8;
   repeat  
     for x:= 1 to 2 do
     begin
       if (a <= n) then
         write(a, ' ');
       a:= a + 2;
     end;
     if (a <= n) then
       write (3,' ');
 
   until x > n ;
 
  readln();
 

end.

program Project1;
var n, a, x: integer;
begin
 writeln('Введите целое число больше 7');
  readln(n);

   a := 8;
   while (a <= n) do
   begin
     x := 1;
     while (x<=2) do
     x:=x+1;
     begin
       if (a <= n) then
         write(a, ' ');
       a:= a + 2;
     end;
     if (a <= n) then
       write (3,' ');
   end;


  readln();

end.
                                   
vedro-compota's picture

  1. проверить что именно является телом внутреннего цикла
  2. в целом проверить форматирование

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

program Project1;
var n, a, x: integer;
begin
 writeln('Введите целое число больше 7');
  readln(n);

   a := 8;
   while (a <= n) do
   begin
     x :=1;
     while (x<=2) do
     begin
       x:=x+1;
       if (a <= n) then
         write(a, ' ');
       a:= a + 2;
     end;
     if (a <= n) then
       write (3,' ');
   end;


  readln();

end.                          
vedro-compota's picture

засчитано

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