```Contributor: SWAG SUPPORT TEAM

Program ThreePoints_TwoPoints;
{

I Really appreciate ya helping me With this 3 points on a
circle problem. The only thing is that I still can't get it
to work. I've tried the Program you gave me and it spits out
the wrong answers. I don't know if there are parentheses in the
wrong place or what. Maybe you can find the error.

You'll see that I've inserted True coordinates For this test.

on this problem...call me collect person to person or leave it on my
BBS. I get the turbo pascal echo from a California BBS and that sure
is long distance. Getting a good pascal Procedure For this is
important to me because I am using it in a soon to be released math
for 2 weeks now and I've even been dream'in about it!

+
+AL+

(716) 434-7823 Voice
(716) 434-1448 BBS ... if none of these, then leave Program on TP echo.

}

Uses
Crt;
Const
x1 =  4.0642982;
y1 =  0.9080732;
x2 =  1.6679862;
y2 =  2.8485684;
x3 =  4.0996421;
y3 =  0.4589868;

Var
Selection : Integer;
Procedure ThreePoints;
Var
Slope1,
Slope2,
Mid1x,
Mid1y,
Mid2x,
Mid2y,
Cx,
Cy,
begin
ClrScr;
Writeln('3 points on a circle');
Writeln('====================');
Writeln;
Writeln('X1 ->  4.0642982');
Writeln('Y1 ->  0.9080732');
Writeln;
Writeln('X2 ->  1.6679862');
Writeln('Y2 ->  2.8485684');
Writeln('X3 ->  4.0996421');
Writeln('Y3 ->  0.4589868');
Writeln;
Slope1 := (y2 - y1) / (x2 - x1);
Slope2 := (y3 - y2) / (x3 - x2);
Mid1x  := (x1 + x2) / 2;
Mid1y  := (y1 + y2) / 2;
Mid2x  := (x2 + x3) / 2;
Mid2y  := (y2 + y3) / 2;
Slope1 := -1 * (1 / Slope1);
Slope2 := -1 * (1 / Slope2);
Cx     := (Slope2 * x2 - y2 - Slope1 * x1 + y1) / (Slope1 - Slope2);
Cy     := Slope1 * (Cx + x1) - y1;

{
I believe you missed out on using Cx and Cy in next line,
Radius := sqrt(((x1 - x2) * (x1 - x2)) + ((y1 - y2) * (y1 - y2)));
I think it should be . . .
}

Radius := Sqrt(Sqr((x1 - Cx) + (y1 - Cy)));
Writeln;
Writeln('X center line (Program answer) is ', Cx : 4 : 4);
Writeln('Y center line (Program answer) is ', Cy : 4 : 4);
Writeln;
Writeln('True X center = 1.7500');
Writeln('True Y center = 0.5000');
Writeln('Strike any key to continue . . .');
end;

Procedure Distance2Points;
Var
x1, y1,
x2, y2,
Distance : Real;
begin
ClrScr;
Writeln('Distance between 2 points');
Writeln('=========================');
Writeln;
Write('X1 -> ');
Write('Y1 -> ');
Writeln;
Write('X2 -> ');
Write('Y2 -> ');
Writeln;
Writeln;
Distance := Sqrt((Sqr(x2 - x1)) + (Sqr(y2 - y1)));
Writeln('Distance between point 1 and point 2 = ', Distance : 4 : 4);
Writeln;
Writeln('Strike any key to continue . . .');

end;

begin
ClrScr;
Writeln;
Writeln;
Writeln('1) Distance between 2 points');
Writeln('2) 3 points on a circle test Program');
Writeln('0) Quit');
Writeln;