标题:求解bool的返回,怎么返回两个数值?
只看楼主
elf6530789
Rank: 1
等 级:新手上路
帖 子:12
专家分:2
注 册:2010-4-5
结帖率:100%
已结贴  问题点数:20 回复次数:4 
求解bool的返回,怎么返回两个数值?
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;
      
搜索更多相关主题的帖子: 求解 数值 bool 
2010-04-05 12:36
ml232528
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:367
专家分:879
注 册:2007-7-23
得分:0 
double& x1,double& x2 对x1,x2的引用

x1,x2就是方程的解

-︻┻┳═一 ☆ 悲伤的代价就是让自己明白什么是最重要的和应该珍惜的
2010-04-05 12:46
elf6530789
Rank: 1
等 级:新手上路
帖 子:12
专家分:2
注 册:2010-4-5
得分:0 
我想问怎么返回,显示x1,x2的值,上面程序编译不过去!
2010-04-05 12:56
书呆
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:55
专家分:188
注 册:2010-3-26
得分:0 
以下是引用elf6530789在2010-4-5 12:56:49的发言:

我想问怎么返回,显示x1,x2的值,上面程序编译不过去!
编译不过是因为你的代码语法有错误
括号不匹配,语句缺少分号……

沉醉东风月下读。柴门闭,莫管客来无。
2010-04-05 13:26
yyblackyy
Rank: 6Rank: 6
等 级:侠之大者
帖 子:98
专家分:457
注 册:2010-3-31
得分:20 
#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 保险
      
}  //你抄的时候少了“}”
收到的鲜花
  • elf65307892010-04-05 16:55 送鲜花  3朵   附言:很感谢帮我找出错误!
2010-04-05 13:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-301735-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.585428 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved