第九周实验报告5

  1. *
     (程序头部注释开始)  
    * 程序的版权和版本声明部分  
    * Copyright (c) 2011, 烟台大学计算机学院学生   
    * All rights reserved.  
    * 文件名称:   
    * 作    者:  刘程程 
    * 完成日期:  2012    年   04    月   18    日  
    * 版 本 号:  1.0  
      
    * 对任务及求解方法的描述部分  
    * 输入描述: 一元一次方程  
    * 问题描述: 计算方程的值  
    * 程序输出: 方程的值  
    * 程序头部的注释结束  
    */  
      #include "iostream"   
    using namespace std;  
    class CEquation  
    {  
    private:  
        double a;     // 未知数系数   
        double b;     // 常数项   
        char unknown; // 未知数的符号   
    public:  
        CEquation(double aa=0,double bb=0);  
        friend istream &operator >> (istream &in,CEquation &e);  
        friend ostream &operator << (ostream &out,CEquation &e);  
        double Solve();  
        char getUnknown();  
    };  
      
    CEquation::CEquation(double aa,double bb):a(aa),b(bb){}  
      
    // 输入方程   
    istream &operator >> (istream &in,CEquation &e)  
    {  
        char ch1,ch2,ch3,ch4;  
        while(1)  
        {  
            cin>>e.a>>ch1>>ch2>>e.b>>ch3>>ch4;  
            if (ch1>='a' && ch1<='z')  
                if ((ch2=='+' || ch2=='-') && ch3=='=' && ch4=='0') break;  
            cout<<"输入的方程格式不符合规范,请重新输入\n";  
        }  
        if (ch2=='-') e.b=-e.b;  
        e.unknown=ch1;  
        return in;  
    }  
      
    // 输出方程   
    ostream &operator << (ostream &out,CEquation &e)  
    {  
        cout<<e.a<<e.unknown;  
        if (e.b>=0) cout<<"+";  
        cout<<e.b<<"=0"<<endl;  
        return out;  
    }  
      
    // 求解   
    double CEquation::Solve()  
    {  
        double x;  
        if (a==0)  
        {  
            if (b==0) cout<<"任意一个实数均为方程的解。"<<endl;  
            else cout<<"方程无解。"<<endl;  
            return 0;  
        }  
        x=-b/a;  
        return x;  
    }  
      
    char CEquation::getUnknown()  
    {  
        return unknown;  
    }  
      
    int main()  
    {  
        CEquation e;  
        cout<<"请输入一元一次方程(输入格式:3x-8=0):";  
        cin>>e;   //在两次测试中,分别输入3x-8=0和5s+18=0   
        cout<<"方程为:"<<e;  
        cout<<"方程的解为:"<<e.getUnknown()<<"="<<e.Solve()<<endl; //对两次测试,分别输出x=...和s=...   
        e.Solve();  
        system("pause");  
        return 0;  
    }  
    

  2. 感悟:这个程序主要是在于认真仔细地思考运算符的重载问题。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值