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

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

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

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

if((k mod 2)=0)

в задаче ничего про четность не сказано

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

var s, i, k, Q, W: integer;
begin
  i := 0; // переменная вводимая пользователем
  s := 0; // переменная для вывода суммы
  k := 2; // переменная триггер для перезаписи Q и W с пропуском в 1 шаг
  Q := 0; // переменная где хранится введеная число свежее/прошлое
  W := 0; // переменная где хранится введеная число прошлое/свежее
  while(i < 15) do
    begin
      writeln('vvedi celoe chislo:');
      readln(i);
      if((k mod 2)=0) then  // условие для поочередной перезаписи переменных Q W
        begin
          Q := i
        end
      else
        begin
          W := i
        end;
      k:=k+1;   // каждую итерацию увеличиваем k для условия выше
      if(i < 15) then
        begin
          if((k mod 2)=0) then
            begin
              s := Q + i;
              writeln('summ = ',s);
            end
          else
            begin
              s := W + i;
              writeln('summ = ',s);
            end;
        end;
    end;
  writeln('bb');
  readln();
end.                    
vedro-compota's picture

не по условию, проверить ещё раз

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

var s, i, Q, W: integer;
  k: boolean;
begin
  i := 0; // переменная вводимая пользователем
  s := 0; // переменная для вывода суммы
  k := true; // переменная триггер для перезаписи Q и W с пропуском в 1 шаг
  Q := 0; // переменная где хранится введеная число свежее/прошлое
  W := 0; // переменная где хранится введеная число прошлое/свежее
  while(i < 15) do
    begin
      writeln('vvedi celoe chislo:');
      readln(i);
      if(k) then  // условие для поочередной перезаписи переменных Q W
        begin
          Q := i;
          k:=false; // замена флага чтобы в след итерации тут не проходить
        end
      else
        begin
          W := i;
          k:=true; // замена флага чтобы в след итерации тут не проходить
        end;
      if(i < 15) then
        begin
          if(k) then
            s := Q + i
          else
            s := W + i;
          writeln('summ = ',s);
        end;
    end;
  writeln('bb');
  readln();
end.  
vedro-compota's picture

переделать как в видео

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

var W, i :integer;
 
begin
  i := 0;
    while(i <= 15) do
      begin
        W := i;
        writeln('vvedi celoe chislo ');
        readln(i);
        if(i <= 15) then
          writeln('last(',W,') + ','new(',i,') = ',W + i);
      end;
  readln();
end.
vedro-compota's picture

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

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