how an i concrete this prog, here is code. Послано Bobur 19 мар 2008 00:04 program Project1075_chala; {$APPTYPE CONSOLE} uses SysUtils, math; const EPS = 0.0000001; var xa, xb, xc, ya, yb, yc, za, zb, zc, r : integer; AB, BC, AC, cos_gamma, cos_gamma1, yoy, vatar, d, h : real; begin read(xa, ya, za); read(xb, yb, zb); read(xc, yc, zc); read(r); AB := sqrt(sqr(xb-xa)+sqr(yb-ya)+sqr(zb-za)); AC := sqrt(sqr(xc-xa)+sqr(yc-ya)+sqr(zc-za)); BC := sqrt(sqr(xb-xc)+sqr(yb-yc)+sqr(zb-zc)); if AB + BC <= AC+EPS then d := AB-2*r+PI*r else if (AC+EPS >= BC + AB) or (BC+EPS >= AC + AB) then d := AB else begin cos_gamma := (AC*AC+BC*BC-AB*AB)/(2*AC*BC); h := AC*BC*sqrt(1 - sqr(cos_gamma))/AB; if h+EPS >= r then d := AB else begin vatar := 2 * sqrt(sqr(r)-sqr(h)); cos_gamma1 := (2*sqr(r)-sqr(vatar))/(2*r*r); yoy := arccos(cos_gamma1) * r; d := AB - vatar + yoy; end; end; writeLn(d:0:2); end. thanks here new code, but yet answer is 19.87, help Послано Bobur 23 мар 2008 21:09 const EPS = 0.000001; var xa, xb, xc, ya, yb, yc, za, zb, zc, r : integer; c, a, b, yoy, vatar, d, h : real; begin read(xa, ya, za); read(xb, yb, zb); read(xc, yc, zc); read(r); c := sqr(xa-xb)+sqr(ya-yb)+sqr(za-zb); //AB^2 d := sqrt(c); b := sqr(xa-xc)+sqr(ya-yb)+sqr(za-zc); //AC^2 a := sqr(xb-xc)+sqr(yb-yc)+sqr(zb-zc); //BC^2 h := (4*a*b-sqr(a+b-c))/(4*c); if sqrt(h) < r then if sqrt(b-h)+sqrt(a-h)-EPS<=d then begin vatar := 2*sqrt(sqr(r)-h); yoy := r*arccos((2*h-sqr(r))/(r*r)); d := d - vatar + yoy; end; writeLn(d:0:2); end. Re: here new code, but yet answer is 19.87, help Solution is wrong, because you must search for kasatelnye(russian word) Re: here new code, but yet answer is 19.87, help kasatelnye == tangent |