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

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

Модифицируйте предыдущий вывод "ёлочкой" так, чтобы в каждой нечетной строке выводились только четные числа, а в каждой четной только нечетные, например для N=17:

3
4 6
7 9 
12 14
15 17
Распечатка консоли
vvedite chislo N:
30

3
4
7 9
10 12
15 17 19
20 22
25 27 29
var n, i, j, k:integer;
begin
  writeln('vvedite chislo N:');
  readln(n);

  k:=1;
  j:=0;

  for i:=1 to N do
  begin
      if ((i mod 2)=1) AND ((k mod 2)=0) then
      write(i, ' ');
    j := j + 1;


    if (j>=k) then
     begin
       writeln();
       j:=0;
       k:=k+1;
     end;

    if ((i mod 2)=0) AND ((k mod 2)=1) then
     begin
       write(i, ' ');
       j := j + 1;
     end
 end;
  readln();
end.
    

Key Words for FKN + antitotal forum (CS VSU):

vedro-compota's picture

if ((i mod 2)=1) AND ((k mod 2)=0) then 
if ((i mod 2)=0) AND ((k mod 2)=1) then

-- объединить в одно условие

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

gani84's picture

Но результат немного отличается

Вывод консоли
 vvedite chislo N:
17

3
4 6
7 9
12 14
17
vvedite chislo N:
30

3
4 6
7 9
12 14
17 19 21
22 24 26 28
29
var n, i, j, k:integer;
begin
  writeln('vvedite chislo N:');
  readln(n);

  k:=1;
  j:=0;

  for i:=1 to N do
  begin
      if (((i mod 2)=1) AND ((k mod 2)=0)) 
         OR ((i mod 2)=0) AND ((k mod 2)=1) then
      write(i, ' ');
    j := j + 1;


    if (j>=k) then
     begin
       writeln();
       j:=0;
       k:=k+1;
     end;
 end;
  readln();
end.        
vedro-compota's picture

в исходном решении (первый пост этой ветки) неправильная работа со счетчиком j (и дублирование связанного с ним кодом).

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

gani84's picture

Распечатка консоли
vvedite chislo N:
17

3
4 6
7 9
12 14
17

vvedite chislo N:
30

3
4 6
7 9
12 14
17 19 21
22 24 26 28
29
 var n, i, j, k:integer;
begin
  writeln('vvedite chislo N:');
  readln(n);

  k:=1;
  j:=0;

  for i:=1 to N do
  begin
      if ((i mod 2)=1) AND ((k mod 2)=0) then
        write(i, ' ');
      if ((i mod 2)=0) AND ((k mod 2)=1) then
        write(i, ' ');
      j := j + 1;


    if (j>=k) then
     begin
       writeln();
       j:=0;
       k:=k+1;
     end;
  end;
  readln();
end.
vedro-compota's picture

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

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