Задача 6 Урок 11

http://fkn.ktu10.com/?q=node/7341

Модификация одной из пред. задач: Пользователь вводит целые числа. Пока он не введёт число большее 15, в ответ на каждое введённое число выводите сумму этого числа и пред-предыдущего введённого им числа, если это число чётное, иначе просто запрашивать новое число. Если же введённое число больше 15, то цикл необходимо завершить.
В первом витке цикла все "предыдущие" числа можно считать единицами.

var s, i, k, E, Q, W: integer;
begin
  i := 0;
  s := 0;
  k := 2;
  Q := 0;
  W := 0;
  E := 0;
  while(i < 15) do
      begin
       writeln('vvedi celoe chetnoe chislo:');
       readln(i);
       while((i mod 2) <> 0) do
         begin
         writeln('eto ne chetnoe... go ehe');
         readln(i);
         end;

       if((k mod 2) = 0) then
         begin
          E := Q + W;
          Q := i
         end
       else
         begin
          E := Q + W;
          W := i
         end;
       k := k + 1;

       if(i < 15) then
         begin
          if((k mod 2)=0) then
            begin
             s := E + i;
             writeln('summ1 = ', s);
            end
          else
            begin
             s := E + i;
             writeln('summ2 = ', s);
            end;
         end;
      end;
  writeln('bb');
  readln();
end.         
vedro-compota's picture

ждем решения предыдущей

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

var s, i, k, E, Q, W: integer;
begin
  i := 0;
  s := 0;
  k := 2;
  Q := 0;
  W := 0;
  E := 0;
  while(i < 15) do
    begin
      writeln('vvedi celoe chetnoe chislo:');
      readln(i);
      while((i mod 2) <> 0) do
        begin
          writeln('eto ne chetnoe... go ehe');
          readln(i);
        end;
      if((k mod 2) = 0) then
        begin
          E := Q + W;
          Q := i
        end
      else
        begin
          E := Q + W;
          W := i
        end;
      k := k + 1;
      if(i < 15) then
        begin
          s := E + i;
          writeln('summ = ', s);
        end;
    end;
  writeln('bb');
  readln();
end.  
vedro-compota's picture

сделать k логическим значением

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

var s, i, E, Q, W: integer;
  k :boolean;
begin
  i := 0;
  s := 0;
  k := true;
  Q := 0;
  W := 0;
  E := 0;
  while(i < 15) do
    begin
      writeln('vvedi celoe chetnoe chislo:');
      readln(i);
      while((i mod 2) <> 0) do
        begin
          writeln('eto ne chetnoe... go eshe');
          readln(i);
        end;
      if(k) then
        begin
          E := Q + W;
          Q := i;
          k := false;
        end
      else
        begin
          E := Q + W;
          W := i;
          k := true;
        end;
      if(i < 15) then
        begin
          s := E + i;
          writeln('summ = ', s);
        end;
    end;
  writeln('bb');
  readln();
end.  
vedro-compota's picture

нужен обмен переменных

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

var W, i, Q :integer;

begin
  i := 0;
    while(i <= 15) do
      begin
        W := i;
        writeln('vvedi celoe chislo ');
        readln(i);
        if((i mod 2) = 0) then // если  четное - ждем пока будет нечетное
          while((i mod 2) = 0) do
            begin
              writeln('vvedi nechetnoe chislo ');
              readln(i);
            end;
        if(i <= 15) then
          writeln('morelast(',Q,') + ','last(',W,') + ','new(',i,') = ',Q + i);
          Q := W;
      end;
  readln();
end. 
vedro-compota's picture

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

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

vedro-compota's picture

  • по-идее на нечетность должно проверяться число Q
  • вложенные циклы для решения этой задачи не нужны

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

var W, i, Q :integer;

begin
  i := 0;
    while(i <= 15) do
      begin
        W := i;
        writeln('vvedi celoe chislo ');
        readln(i);
        if((i <= 15) and ((Q mod 2) = 0)) then
          writeln('morelast(',Q,') + ','last(',W,') + ','new(',i,') = ',Q + i)
        else
          begin
            writeln('Q - NE chetnoe ');
            writeln('morelast(',Q,') + ','last(',W,') + ','new(',i,') = ',0 + i);
          end;
        Q := W;
      end;
  readln();
end.  
vedro-compota's picture

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

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