Задача 10 урок 11

Задача 10 урок 11

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

var a, b, c, d, f: integer;
begin
  f :=0;
  while (f<3) do
    begin
      write('vvedite celoe chislo:');
      readln(d);
      if (f = 0) AND ((d < 0) AND (d mod 2 = -1)) then
      begin
        a := d;
        f := f + 1;
      end
      else if (f = 1) AND ((d < 0) AND (d mod 2 = -1)) then
      begin
         b := d;
         f := f + 1;
      end
      else if (f = 2) AND ((d < 0) AND (d mod 2 = -1)) then
      begin
        c := d;
        f := f + 1;
        writeln('summa =', a + b + c);
      end;
      writeln('f =', f);
    end;
  readln();
end.       
vedro-compota's picture

сейчас имеется сильное дублирование кода, а именно фрагмента:

((d < 0) AND (d mod 2 = -1))

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

var a, b, c, d, f: integer;
begin
  f :=0;
  while (f<3) do
    begin
      write('vvedite celoe chislo:');
      readln(d);
      if ((d < 0) AND (d mod 2 = -1)) then
      begin
        a := b;
        b := c;
        c := d;
        f := f + 1;
        writeln('f =', f);
      end;
    end;
  writeln('summa =', a + b + c);
  readln();
end.
vedro-compota's picture

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

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