菜鸟问题:关于一元二次方程的解

pwnwch 2003-09-13 06:04:39
请问编写一元二次方程的解的程序除了A<>0,B^2>4AC的条件外,还需考虑什么才算
完全?

//BOW
...全文
149 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
playboyxp 2003-09-29
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <math.h>
void f1(float i,float j,float k)
{
float y1,y2,x;
x=sqrt(j*j-4*i*k);
y1=(-j+x)/(2*i);
y2=(-j-x)/(2*i);
printf("x1=%f,x2=%f\n",y1,y2);
}
void f2(float i,float j)
{
float y;
y=-j/(2*i);
printf("x1=x2=%f\n",y);
}
void xprintf()
{
printf("方程无解\n");
}

main()
{
int a,b,c,i,j,k;
scanf("%d,%d,%d",&a,&b,&c);
if ((b*b-4*a*c)>0) f1(a,b,c);
else if((b*b-4*a*c)==0) f2(a,b);
else xprintf();

}
Anders911 2003-09-29
  • 打赏
  • 举报
回复
同意楼上的观点
asdffei 2003-09-29
  • 打赏
  • 举报
回复
要全面考虑很困难
要考虑a,b,c为非数字;
要限制a,b,c的范围以免(b^2||4*a*c)溢出;
。。。。。。
RainWindy 2003-09-29
  • 打赏
  • 举报
回复
电脑是死的,你得先告诉它,是什么数据,怎么计算,是什么值,然后再输出。
也就是说那是题目,现在要解,你得给定范围(a,b,c),再给出计算公式,然后直接用公式去套。
  • 打赏
  • 举报
回复
为什么不解虚根?!
liyongf 2003-09-13
  • 打赏
  • 举报
回复
你有的哈。数学问题不好用计算机来处理。
nirvana_ya 2003-09-13
  • 打赏
  • 举报
回复
可以让方程规范化,如:总是让a=1,这样a非常小就相当于b和c比较大.
只要在计算机能表示的数的范围里,就可以解.
还有一种情况,就是解本身很大,这时a b都很小,c很大,可以考虑让x/CON,代替x构造新方程再解.CON为一个大数,如10^6等,然后解再乘上CON就可以,不过可能有精度的问题.(如果要用高精度,当然就要抛弃double这种内置的类型)
算法本身没问题,当它永远只在一定范围里有效
pwnwch 2003-09-13
  • 打赏
  • 举报
回复
如果A非常小如何处理?
nirvana_ya 2003-09-13
  • 打赏
  • 举报
回复
应该够了,不过这样的话只能求出实根.重根也没法具体说明.
如果B^2=4AC还是让重根输出吧
pwnwch 2003-09-13
  • 打赏
  • 举报
回复
应该还有一些病态情况
积木 2003-09-13
  • 打赏
  • 举报
回复
没有了,就这些就够用了,至少我这么认为

24,855

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧