Gigabyte, модифицированный вариант
| Код | program Project2; {$N+} var x0, y0, R, L : Double; //***************************************************************************** function Min(a, b : double) : double; begin if (a <= b) then Min := a else Min := b; end; //***************************************************************************** procedure Process_2_Quater; begin if (y0 > -x0) then begin if (y0 <= R) then L := -x0 else L := Sqrt(x0 * x0 + (y0 - R) * (y0 - R)) end else begin if (-x0 <= R) then L := y0 else L := Sqrt(y0 * y0 + (x0 - R) * (x0 - R)) end; end; //***************************************************************************** procedure Process_3_Quater; var len : double; begin len := sqrt(x0 * x0 + y0 * y0);
if (len >= R) then // if outside of circle L := len - R else L := Min(R - len, -y0); end; //***************************************************************************** procedure Process_1_Quater; var len : double; begin len := sqrt(x0 * x0 + y0 * y0);
if (len >= R) then // if outside of circle L := len - R else L := Min(R - len, x0); end; //***************************************************************************** procedure Process_4_Quater; var len : double; begin len := sqrt(x0 * x0 + y0 * y0);
if (len >= R) then // if outside of circle L := len - R else L := Min(R - len, len); end; //***************************************************************************** begin Write(' x0 = '); read(x0); writeln; Write(' y0 = '); read(y0); writeln; Write(' R = '); read(R); writeln; if (x0 * y0 <= 0) and (x0 <= 0) then Process_2_Quater else if (x0 * y0 >= 0) and (x0 <= 0) then Process_3_Quater else if (x0 * y0 >= 0) and (x0 > 0) then Process_1_Quater else Process_4_Quater;
Writeln(' L=', L : 5 : 5); Readln; Readln; end. //*****************************************************************************
|
|