[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;
}