Загрузка данных


program Lab11_Var10;

var
  a, b, c, x, x_end, dx, f: real;
  is_real, div_zero: boolean;

begin
  Write('Введите действительные числа a, b, c: ');
  ReadLn(a, b, c);
  Write('Введите Xнач., Xкон., dX: ');
  ReadLn(x, x_end, dx);

  { Проверка кратности 4 целой части выражения abc }
  is_real := (Trunc(a * b * c) mod 4 = 0);

  WriteLn('-----------------------------');
  WriteLn('|     X     |       F       |');
  WriteLn('-----------------------------');

  { Цикл с предусловием для прохода по интервалу }
  while x <= x_end + 1e-9 do
  begin
    div_zero := False;

    if (x < 3) and (b <> 0) then
      f := a * Sqr(x) - b * x + c
    else if (x > 3) and (b = 0) then
    begin
      if x - c = 0 then
        div_zero := True
      else
        f := (x - a) / (x - c);
    end
    else
    begin
      if c = 0 then
        div_zero := True
      else
        f := x / c;
    end;

    { Вывод строки таблицы с учетом типа значения F }
    if div_zero then
      WriteLn('| ', x:9:2, ' |  Деление на 0 |')
    else if is_real then
      WriteLn('| ', x:9:2, ' | ', f:13:4, ' |')
    else
      WriteLn('| ', x:9:2, ' | ', Trunc(f):13, ' |');

    x := x + dx;
  end;

  WriteLn('-----------------------------');
  ReadLn;
end.