我是c++初学者,最近编了一个求解一元二次方程的小程序,但总是有一个错误,找不出来,希望牛人帮忙。

我是c++初学者,最近编了一个求解一元二次方程的小程序,但总是有一个错误,找不出来,希望牛人帮忙。,第1张

1、cmath.h修改成math.h

2、i的使用有问题,电脑不会在你*i的时候自动在一个数后面追加一个i的

3、最好定义主函数为int型,另外这个前面加else

下面裤搭掘是我给你修改的,供参考!

#include "iostream.h"

#include "math.h"

using namespace std

int main()

{

float a,b,c,d,x1,x2,rpart,ipart

cout<<"方程为a*x^2+b*x+c=0,请输入a、b、c的值"胡核<<endl

cin>>a>>b>>c

if (a==0)

{

if (b==0)

cout<<"方程无解"

else

{

x1=-c/b

cout<<"一元一次方程的根是"<<x1<<endl

}

}

else

{

d=b*b-4*a*c

if (d<0)

{

rpart=-b/(2*a)

ipart=sqrt(-d)/(2*a)

//x1=rpart+ipart*i

//x2=rpart-ipart*i

cout<<"方程有两个复根:x1="<<rpart<<"+"<<ipart<<"i"<<" x2="<<rpart<<"-"<<ipart<<"i"<<endl

}

else if (d==0)

{

x1=-b/(2*a)

cout<<"方程有两个枝滚相等的实根,x1=x2="<<x1<<endl

}

else

{

x1=(-b+sqrt(d))/(2*a)

x2=(-b-sqrt(d))/(2*a)

cout<<"方程有两个不相等的实根,x1="<<x1<<" x2="<<x2<<endl

}

}

getchar()

getchar()

return 0

}

# include <stdio.h>

# include <math.h>

void main()

{

double a

double b

double c

double delta

double x1

double x2

delta=b*b-4*a*c

printf("请依芦宴基次输入a,b,c的值(中间用空格间隔):")

scanf("%lf %lf %lf",&a,&b,&c)

if (delta>0)

{

x1=(-b+sqrt(delta))/2*a

x2=(-b-sqrt(delta))/2*a

printf("有两个解:x1=%lf,x2=%lf",x1,x2)

}

else if (delta==0)

{

x2=x1=(-b+sqrt(delta))/2*a

printf("有一个解:x1=x2=%lf",x1)

}

else if (delta<0)

{

printf("无解")

}

}

首先 你的祥雹输入状态好像有些不是英文状态 我已帮你改过

还陪谨有就是4ac 不能这样写

c语言环境没那么聪明

浮点数比较时不能这样比较,须设定一允许误差,在误差之内的就可认为相等

有基神限的字长不能把小数精确的转化成2进制

If CSng(x + y) = 2.2 And CSng(x - y) = 0.2 Then

Text1.Text = x

Text2.Text = y

End If

这样就行了

小余1的数 都要这样比较

楼上的把精度缩小团锋滑到一位小数 我这里是把精度缩小为塌腊单精度

因为浮点小数 就算出来的差值实际不是0.2 你可以去试验一下


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12559590.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存