首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >求二次方程x值的程序

求二次方程x值的程序
EN

Stack Overflow用户
提问于 2011-12-18 23:31:10
回答 3查看 3K关注 0票数 0

给定a=1、b=5和c=6的值,x的值应该是-2和-3,但是下面的程序给出的x的值是6和-11,这是不正确的。如果有人能找出程序出了什么问题,我将不胜感激。

代码语言:javascript
复制
#include<iostream.h>
#include<conio.h>

int main()
{
    char reply;
    int a,b,c,q,z;

    do
    {
        cout<<"Enter the value of a: ";
        cin>>a;
        cout<<"\nEnter the value of b: ";
        cin>>b;
        cout<<"\nEnter the value of c: ";
        cin>>c;

       q=(-b-(b*b-4*a*c)sqrt(b))/2/a;

       z=(-b+(b*b-4*a*c)sqrt(b))/2/a;

        cout<<"\nThe values of x are "<<q<<" and "<<z;
        cout<<"\nDo you want to find another values of x(y/n)?";
        cin>>reply;
    }
    while(reply=='y');

    getch();
    return 0;
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-18 23:36:04

变化

代码语言:javascript
复制
    q=(-b-(b^2-4*a*c)^1/2)/2*a;
    z=(-b+(b^2-4*a*c)^1/2)/2*a;

代码语言:javascript
复制
    q=(-b-(b^2-4*a*c)^1/2)/2/a;
    z=(-b+(b^2-4*a*c)^1/2)/2/a;

在此之后,将b^2更改为b*b (^xor,而不是power),将b^1/2更改为sqrt(b)

然后,使用double而不是int

票数 4
EN

Stack Overflow用户

发布于 2011-12-18 23:34:36

^符号实际上是bitwise XOR运算符,而不是幂或指数运算符,所以b^2实际上是b xor 2。请尝试使用b*b

如果需要将基数提升到2以外的幂指数,则需要使用pow函数。

并使用sqrt函数(在<math.h>中)来计算平方根,而不是将数字提升到1/2的幂。

此外,a/b*c被解析为(a/b)*c,因此您需要使用以下两个括号之一:

代码语言:javascript
复制
   (...)/(2*a);

或者做第二次除法:

代码语言:javascript
复制
   (...)/2/a;
票数 8
EN

Stack Overflow用户

发布于 2011-12-18 23:36:11

首先,将所有数据类型更改为double,否则1/2将提供0而不是0.5

其次,使用<cmath>头文件中的std::sqrt

然后回想一下公式,并正确计算它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8552744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档