回 帖 发 新 帖 刷新版面

主题:请教一个很简单的问题

我是Qbasic 入门学习者,今有一数学问题需要使用Qbasic解决,尝试了一下编了几行代码没有成功,请各位帮帮忙

我的题目:
a=2*d+e-b-c
a=e*(d^2-e^2/4)^0.5/b
a=(c^2-b^2)^0.5
未知数a,b,c,d,e
求解不定方程的正整数解

我设计的代码
for a = 100 to 1000
for b = 100 to 1000
for c = 100 to 1000
for d = 100 to 1000
a=2*d+e-b-c
a=e*(d^2-e^2/4)^0.5/b
a=(c^2-b^2)^0.5
print a,b,c,d,e
if a>1 and b>1 and c>1 and d>1 and e>1 then print a,b,c,d,e :end
next d,c,b,a
end


运算结果出现illegal function

请各位指点一下哪里的问题,并附带上正确的代码

万分感谢

回复列表 (共22个回复)

11 楼

那请楼上的大哥给出一个能用QB解决问题的方法,并府上代码。
我试过用数学方法,想不出来
麻烦了

12 楼

我估计你最后一个式子的+号是搞错了的,
应该是 a*b=e*(d^2-e^2/4)^0.5
我看得出来,
问题估计是求一个直角三角形和一个等腰三角形,它们的周长和面积相等.

13 楼

这个问题(对于我来说)不能说很简单,因为我读的书少.
不过我记得学圆的时候是有这么一件事的吧?
一根弧固定,顶点随圆边移动?什么东西不变来着?

14 楼

没错,题目就是这样。应该是减号,打错了
谢谢楼上的了,我去试试

15 楼

应该是面积吧?我不确定

16 楼

如果使用减号的话,还是只要一运行就illegal function,我个人认为可能是因为程序先试e,所以e一旦试倒比d大就出错了

17 楼

因为是三角形,而且还要是正整数,
QB中用穷举的办法也只好这样子了
我在语句中加多很多判断三角形的判断语句,
估计运行速度有点可怕.

for a=1 to 1000
  for b=1 to 1000
    for c=1 to 1000
      if (c<a+b) and (c^2=a^2+b^2) then
        for d=1 to 1000
          for e=1 to 1000
            if e<d*2 then
                 if (a+b+c=2*d+e) and (a*b=e*(d^2-e^2/4)^0.5) then
                     print a,b,c,d,e
                 endif
            endif
        next e,d
       end if
next c,b,a

18 楼

再改良一下:

for a=1 to 1000
  for b=a to 1000
    c=(a*a+b*b)^0.5
      if c=int(c) then
        sl=a+b+c
        for d=sl\4 to sl\2
            e=sl-2*d
            if e<d*2 then
                 if a*b=e*(d^2-e^2/4)^0.5 then
                     print a,b,c,d,e
                 endif
            endif
        next d
       end if
next b,a

速度依然太慢.
正整数我已经算到5000了,估计应该不大可能了,学学数学算算吧.

19 楼

又想起了一个问题,
记得有一个三边求面积的公式的,
也就是三边定一个三角形.
估计是没有等周长等面积的三角形的吧,
只有等腰直角三角形.也就是同一个三角形了吧.
只是猜想的,也不敢肯定,不为别的,只因为自己没文化.

20 楼

麻烦楼上的了,我今天才知道,这是一道经典数学难题,题设很简单,解答过程极其复杂,而且是唯一解,可能是有内在定理保证的,真是谢谢了

我来回复

您尚未登录,请登录后再回复。点此登录或注册