注册 登录
编程论坛 C++教室

求解bool的返回,怎么返回两个数值?

elf6530789 发布于 2010-04-05 12:36, 1702 次点击
1楼

题目是解ax*x+b*x+c=0的解,必须用bool solution (double a,double b,double c,double& x1,double& x2),输入a,b,c求解x1,x2.以下是我的程序
#include <iostream>
#include <cmath>
using namespace std;
bool solution (double a,double b,double c,double x1,double x2)
{
     double D,p;

    D=b*b-4*a*c;

    if (D<0)

    {  
           return   false;
    }
    if (D==0)

    {

    p=-b/(2*a);

    x1=p+sqrt(D)/(2*a);

    cout<<"方程有两个相同的实根。"<<endl;

    cout<<"x1=x2="<<x1<<endl;

    return true;
    }

    if (D>0)

    {

    p=-b/(2*a);

    x1=p+sqrt(D)/(2*a);

    x2=p-sqrt(D)/(2*a);

     cout<<"方程有两个不同的实根。"<<endl;

     cout<<"x1="<<x1<<endl<<"x2="<<x2<<endl;
      return true;}}
int main()
   
{    double a,b,c,x1,x2;
      cin>>a>>b>>c
      bool solution (a,b,c,&x1,&x2)
     cout<<"请输入3个数:"<<endl;
       cout<<"方程为:"<<a<<"x^2+"<<b<<"x+"<<c<<"=0"<<endl;
     if (bool=false)
           cout<<"方程无解!"<<endl;
     if (bool==true)
          cout<<"x1="<<x1<<";"<<"x2="<<x2;
      
4 回复
#2
ml2325282010-04-05 12:46
double& x1,double& x2 对x1,x2的引用

x1,x2就是方程的解
#3
elf65307892010-04-05 12:56
我想问怎么返回,显示x1,x2的值,上面程序编译不过去!
#4
书呆2010-04-05 13:26
以下是引用elf6530789在2010-4-5 12:56:49的发言:

我想问怎么返回,显示x1,x2的值,上面程序编译不过去!
编译不过是因为你的代码语法有错误
括号不匹配,语句缺少分号……
#5
yyblackyy2010-04-05 13:43
#include <iostream>                    //这是改好的
#include <cmath>
using namespace std;
bool solution (double a,double b,double c,double &x1,double &x2)        //x2,x1 是引用传值
{
     double D,p=0.0; //p 初始一下

    D=b*b-4*a*c;

    if (D<0)
        return  false;
    else if (D==0)
    {
            p=-b/(2*a);
            x1=x2=p;
            return true;
                        //cout<<"方程有两个相同的实根。"<<endl;  //可以省了
    }
    else
            p=-b/(2*a);
            x1=p+sqrt(D)/(2*a);
            x2=p-sqrt(D)/(2*a);   
            return true;
                    // cout<<"方程有两个不同的实根。"<<endl;               //可以省略
                            //cout<<"x1="<<x1<<endl<<"x2="<<x2<<endl;   
}                                                
                                        // cout<<"x1=x2="<<x1<<endl;
int main()
   
{    double a,b,c,x1,x2;
     bool OK;                 //定义一个bool对象
      cout<<"请输入3个数:"<<endl;      //先提示,再输出  
     cin>>a>>b>>c;   
       cout<<"方程为:"<<a<<"x^2+"<<b<<"x+"<<c<<"=0"<<endl;
       OK= solution (a,b,c,x1,x2);  //求出 OK的bool值
     if (OK==false)           //比较
           cout<<"方程无解!"<<endl;
     if (OK==true)           //比较
          cout<<"x1="<<x1<<";"<<"x2="<<x2<<endl;
     return 0;   //加return 保险
      
}  //你抄的时候少了“}”
1