{$mode objfpc}{$H-}{$R+}{$T+}{$Q+}{$V+}{$D+}{$X-}{$warnings on}
program inverso_02;

type 
    TipoResultado= record
        codigo:string; 
        valor: real;
    end;

function inverso(x: real): TipoResultado;
begin
    if x = 0 then 
        result.codigo := 'Error, el divisor no puede ser nulo'
    else begin
        result.codigo := 'ok';
        result.valor := 1/x;
    end;
end;

procedure escribe_inverso(x:real; calculado: TipoResultado);
begin

    if calculado.codigo = 'ok' then begin
        write('El inverso de ', x:0:3 );
        writeln(' es ', calculado.valor:0:3);
    end
    else
        writeln( calculado.codigo );
end;


var 
    x : real;
    calculado : TipoResultado;

begin
    writeln('Escribe un número');
    readln(x);
    
    calculado := inverso(x);
    escribe_inverso(x, calculado);
end.
