Решение задачи №16 из главы 13.1

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

8 10 3 12 14 3 16 18 3 20 22 3 и т.д.

-- то есть всё начинается с восьмерки, затем число увеличивается на 2, затем выводит тройка и ещё пара увеличенных на 2 чисел и т.д.

var N,a: integer;
begin
  a:=0;
  writeln('vvedite cislo N');
  readln(n);

  if (n > 0) then
    while (a < n) do
     begin
       a := a + 2;
       write(' ',a);
       a := a + 2;
       write(' ',a);
       write(' ', 3);
     end
  else
    writeln('oshibka');
  readln();
end.
vedro-compota's picture

добавить распечатку консоли

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

gani84's picture

vvedite cislo N
50
 2 4 3 6 8 3 10 12 3 14 16 3 18 20 3 22 24 3 26 28 3 30 32 3 34 36 3 38 40 3 42 44 3 46 48 3 50 52 3
gani84's picture

var n,i: integer;
begin
  writeln('vvedite cislo N');
  readln(n);
  if (n > 0) then
      begin
      for i:=1 to n do
         write(i+1,' ', i+2,' 3',' ');
      end
  else
     writeln('oshibka');
  readln();
end.
vedro-compota's picture

в одном витке надо выводить одну переменную
Предварительно решите 7-ю задачу отсюда: http://fkn.ktu10.com/?q=node/8612

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

gani84's picture

Распечатка консоли
Vvedite chislo
100
8 10 3  12 14 3  16 18 3  20 22 3  24 26 3  28 30 3  32 34 3  
36 38 3  40 42 3  44 46 3  48 50 3  52 54 3  56 58 3  60 62 
3  64 66 3  68 70 3  72 74 3  76 78 3  80 82 3  84 86 3  88 90 
3  92 94 3  96 98 3  100 
var
i,n,j:integer;
begin
i:=8; // начальное значение счетчика
j:=0;// начальное значение для внутреннего счетчика
writeln('Vvedite chislo');
readln(n);
if n >= 0 then //внешнее условие
begin
    while i<=n do
       begin
       j:=j+1; // запускаем внутренний счетчик
       if(j=3) then
         begin
           write(3, '  ');
           j:=0 //обнуляем внутренний счетчик
         end
       else
          begin
             write(i, ' ');
             i:=i+2; // изменяем значение счетчика
          end
        end
end
else
    writeln('oshibka');//если введённое значение отрицательное или равно нулю
readln();
end.

vedro-compota's picture

решение верное, добавьте вариант с mod

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

gani84's picture

Вывод консоли
Vvedite chislo
100
8 10 3  12 14 3  16 18 3  20 22 3  24 26 3  28 30 3  32 34 3  36 38 3  
40 42 3  44 46 3  48 50 3  52 54 3  56 58 3  60 62 3  64 66 3  68 70 3  
72 74 3  76 78 3  80 82 3  84 86 3  88 90 3  92 94 3  96 98 3  100
var
i,n,j:integer;
begin
i:=8; // начальное значение счетчика
j:=0;// начальное значение для внутреннего счетчика
writeln('Vvedite chislo');
readln(n);
if n >= 0 then //внешнее условие
begin
    while i<=n do
       begin
       j:=j+1; // запускаем внутренний счетчик
       if((j mod 3)=0) then
         begin
           write(3, '  ');
           j:=0 //обнуляем внутренний счетчик
         end
       else
          begin
             write(i, ' ');
             i:=i+2; // изменяем значение счетчика
          end
        end
end
else
    writeln('oshibka');//если введённое значение отрицательное или равно нулю
readln();
end.          
vedro-compota's picture

решите без обнуления счетчика j
и объясните почему обнуление тут не обязательно

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

gani84's picture

Вывод консоли
Vvedite chislo
100
8 10 3  12 14 3  16 18 3  20 22 3  24 26 3  28 30 3  32 34 3  36 38 3 
40 42 3  44 46 3  48 50 3  52 54 3  56 58 3  60 62 3  64 66 3  68 70 3 
72 74 3  76 78 3  80 82 3  84 86 3  88 90 3  92 94 3  96 98 3  100
Здесь можно убрать j:=0
j:=j+1; // запускаем внутренний счетчик
if((j mod 3)=0) then
begin
write(3, ' ');
Так как, если j делится 3 на цело тогда выводиться 3, потом если j:=4
то выводится i:=i+2 т.е. 12 потом j:= 5 тогда выводим 14,
потом если j:=6 то j делится 3 на цело тогда выводиться 3 и т.д.
var
i,n,j:integer;
begin
i:=8; // начальное значение счетчика
j:=0;// начальное значение для внутреннего счетчика
writeln('Vvedite chislo');
readln(n);
if n >= 0 then //внешнее условие
begin
    while i<=n do
       begin
       j:=j+1; // запускаем внутренний счетчик
       if((j mod 3)=0) then
         begin
           write(3, '  ');
         end
       else
          begin
             write(i, ' ');
             i:=i+2; // изменяем значение счетчика
          end
        end
end
else
    writeln('oshibka');//если введённое значение отрицательное или равно нулю
readln();
end. 
vedro-compota's picture

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

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