程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 一元二次方程的類

一元二次方程的類

編輯:C++入門知識

[cpp] view plaincopyprint?/* 
* Copyright (c) 2013, 煙台大學計算機學院                     
* All rights reserved.                     
* 文件名稱:test.cpp                     
* 作者:邱學偉                    
* 完成日期:2013 年 5 月 20 日                     
* 版本號:v1.0                                        
* 輸入描述:無                     
* 問題描述:一元二次方程類                  
* 程序輸出:
* 問題分析:                    
* 算法設計:略                     
*/          
 
/*
設計一元一次方程類,求形如ax+b=0的方程的解。
例如:輸入3x-8=0時,輸出的方程的解為x=2.66667;
再如:輸入5s+18=0時,輸出的方程的解為s=-3.6;
*/ 
 
#include <iostream>  
using namespace std; 
class CEquation 

    public: 
    CEquation(double a1=0,double b1=0); 
    friend istream & operator>>(istream &in,CEquation &c); 
    friend ostream & operator<<(ostream &output,CEquation &c); 
    double solve(); 
    char getx(); 
    private: 
    double a,b; 
    double x; 
    char s; 
}; 
CEquation::CEquation(double a1,double b1) 

    a=a1; 
    b=b1; 

istream & operator>>(istream &in,CEquation &c) 

    char ac,bc,xc,l;//ac="+/-",xc="a-z的符號",bc="=";  
    cin>>c.a>>xc>>ac>>c.b>>bc>>l;//ax+b=0  
    if((ac!='+' && ac!='-') || bc!='=' )//邏輯或是“||”  邏輯與是“&&”  
    { 
        if(xc<'a' || xc>'z' || l!='0') 
        cout<<"格式不正確!"; 
    } 
    if(ac=='-') 
    { 
    c.b=-c.b; 
    } 
    c.s=xc; 
    return in; 

ostream & operator<<(ostream &output,CEquation &c) 

    cout<<c.a<<c.s; 
    if(c.b>0)cout<<"+"; 
    cout<<c.b<<"=0"<<endl; 
    return output; 

double CEquation::solve() 

    double x; 
    if(a==0) 
    { 
        cout<<"方程無解"<<endl; 
        return 0; 
    } 
    x=-b/a; 
    return x; 

char CEquation::getx() 

    return s; 

int main() 

    CEquation e; 
    cout<<"請輸入一元一次方程(輸入格式:3x-8=0/5s+18=0):"; 
    cin>>e;   //在兩次測試中,分別輸入3x-8=0和5s+18=0  
    cout<<"方程為:"<<e; 
    cout<<"方程的解是:"<<e.getx()<<"="<<e.solve()<<endl; 
    return 0; 

/*
* Copyright (c) 2013, 煙台大學計算機學院                    
* All rights reserved.                    
* 文件名稱:test.cpp                    
* 作者:邱學偉                   
* 完成日期:2013 年 5 月 20 日                    
* 版本號:v1.0                                       
* 輸入描述:無                    
* 問題描述:一元二次方程類                 
* 程序輸出:
* 問題分析:                   
* 算法設計:略                    
*/        

/*
設計一元一次方程類,求形如ax+b=0的方程的解。
例如:輸入3x-8=0時,輸出的方程的解為x=2.66667;
再如:輸入5s+18=0時,輸出的方程的解為s=-3.6;
*/

#include <iostream>
using namespace std;
class CEquation
{
    public:
    CEquation(double a1=0,double b1=0);
    friend istream & operator>>(istream &in,CEquation &c);
    friend ostream & operator<<(ostream &output,CEquation &c);
    double solve();
    char getx();
    private:
    double a,b;
    double x;
    char s;
};
CEquation::CEquation(double a1,double b1)
{
    a=a1;
    b=b1;
}
istream & operator>>(istream &in,CEquation &c)
{
    char ac,bc,xc,l;//ac="+/-",xc="a-z的符號",bc="=";
    cin>>c.a>>xc>>ac>>c.b>>bc>>l;//ax+b=0
    if((ac!='+' && ac!='-') || bc!='=' )//邏輯或是“||”  邏輯與是“&&”
    {
        if(xc<'a' || xc>'z' || l!='0')
        cout<<"格式不正確!";
    }
    if(ac=='-')
    {
    c.b=-c.b;
    }
    c.s=xc;
    return in;
}
ostream & operator<<(ostream &output,CEquation &c)
{
    cout<<c.a<<c.s;
    if(c.b>0)cout<<"+";
    cout<<c.b<<"=0"<<endl;
    return output;
}
double CEquation::solve()
{
    double x;
    if(a==0)
    {
        cout<<"方程無解"<<endl;
        return 0;
    }
    x=-b/a;
    return x;
}
char CEquation::getx()
{
    return s;
}
int main()
{
    CEquation e;
    cout<<"請輸入一元一次方程(輸入格式:3x-8=0/5s+18=0):";
    cin>>e;   //在兩次測試中,分別輸入3x-8=0和5s+18=0
    cout<<"方程為:"<<e;
    cout<<"方程的解是:"<<e.getx()<<"="<<e.solve()<<endl;
    return 0;
}

 \

 

\

 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved