御笔剑客 发表于 2018-2-12 13:12:31

C++如何写一个十字相乘法的代码

用c++如何写一个十字相乘法解一元二次方程呢?

鱼油127327 发表于 2018-2-14 13:04:02

#一元二次方程标准形式:ax*x+bx+c=0
def showFac(num):
    '''分解出两个因数,返回这两个因数组成的列表
    但是这个只能得到最大公因数和另外一个因数,还需要完善才能应用
    '''
    count=num//2
    while count>1:
      if num%count==0:
            return
            break
      count-=1
    else:
      return

a = int(input('请输入整数a:'))
b = int(input('请输入整数b:'))
c = int(input('请输入整数c:'))
#把a和c分别分解出两个因数保存到两个列表ar和cr
ar = showFac(a)
cr = showFac(c)
#判断上一步凑出的因数是否可以能用来做十字相乘
if ar*cr+ar*cr==b:
    #模拟十字相乘法过程
    #按照十字相乘法写出来(ar*x+cr)+(ar*x+cr)=0
    #得到x1,x2并转为string类型
    #注意用自然除
    x1 = str(-cr/ar)
    x2 = str(-cr/ar)
    #把x1,x2小数点左边和右边分别切出来
    (x1_point_left, x1_point_right) = x1.split('.',1)
    (x2_point_left, x2_point_right) = x2.split('.',1)
    #看小数点右边不为零即无法整除的情况
    if x1_point_right != '0':
      #为了精确就输出分数形式
      print('x=',-cr,'/',ar)
    else:
      #可以整除,直接输出x1
      print('x=',x1)
    if x2_point_right != '0':
      print('x=',-cr,'/',ar)
    else:
      print('x=',x2)
else:
    print('对不起无法解答')
我用的python写的,没学过c语言,这个只能解一部分一元二次方程,因为分解因数的那个函数不能凑出多种因数

御笔剑客 发表于 2018-2-14 13:48:36

鱼油127327 发表于 2018-2-14 13:04
我用的python写的,没学过c语言,这个只能解一部分一元二次方程,因为分解因数的那个函数不能凑出多种因 ...

谢谢了,这个代码确实是没法推广,只能部分情况用
页: [1]
查看完整版本: C++如何写一个十字相乘法的代码