作业帮 > 综合 > 作业

pascal求解析式问题

来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/09/22 15:42:28
pascal求解析式问题
已知两组坐标x1,y1,x2,y2(正整数)和一个角度a(顺时针方向)
角a是以直线y=kx+b(解析式)为一边,以x2,y2为顶点,以(x1,y1)(x2,y2)所在直线为另一边
求一个pascal函数,求另一边解析式y=kx+b的k和b,格式如下
function getkb(x1,y1,x2,y2{两组坐标正整数},a{顺时针方向角度,取整},w{w为1时输出k,为2时输出b}:integer):integer{解析式的k或b取值}
感激不尽!
pascal求解析式问题
这是编程中的函数题啊,很有数学味...
program getkba;
var x1,x2,y1,y2,a,w,ans:integer;
function getkb(x1,y1,x2,y2,a,w:integer):integer;
var k1,k2,b2,r:real;
begin
k1:=(y2-y1)/(x2-x1); {求出来第一条直线的斜率}
r:=arctan(k1)-(a/180)*pi; {顺时针旋转角度a,arctan(a)求出来原来的直线倾斜角度,(a/180)*pi求出来a的弧度制,减掉就是旋转了,减出来就是第二条直线的倾斜角度}
k2:=sin(r)/cos(r); {FP里没有tan这个函数,就用sinr/cosr=tanr了}
b2:=y2-k2*x2; {依据k2求出b2}
if w=1 then getkb:=round(k2)
else if w=2 then getkb:=round(b2); {判断要求输出的数}
end;
begin
readln(x1,y1,x2,y2,a,w); {先读入}
ans:=getkb(x1,y1,x2,y2,a,w); {调用函数}
writeln(ans);
end.