[YTU]_2535( C++复数运算符重载(+与))
題目描述
定義一個復數類Complex,重載運算符“+”,使之能用于復數的加法運算與輸出操作。
(1)參加運算的兩個運算量可以都是類對象,也可以其中有一個是實數,順序任意。例如,c1+c2,d+c1,c1+d均合法(設d為實數,c1,c2為復數)。
(2)輸出的算數,在復數兩端加上括號,實部和虛部均保留兩位小數,如(8.23+2.00i)、(7.45-3.40i)、(-3.25+4.13i)等。
編寫程序,分別求兩個復數之和、整數和復數之和,并且輸出。
請在下面的程序段基礎上完成設計:
#include <iostream>
#include <iomanip>
using namespace std;
class Complex
{
public:
Complex():real(0),imag(0) {}
Complex(double r,double i):real(r),imag(i) {}
Complex operator+(Complex &);
Complex operator+(double &);
friend Complex operator+(double&,Complex &);
friend ostream& operator << (ostream& output, const Complex& c);
private:
double real;
double imag;
};
//將程序需要的其他成份寫在下面,只提交begin到end部分的代碼
//******************** begin ********************
//********************* end ********************
int main()
{
//測試復數加復數
double real,imag;
cin>>real>>imag;
Complex c1(real,imag);
cin>>real>>imag;
Complex c2(real,imag);
Complex c3=c1+c2;
cout<<"c1+c2=";
cout<<c3;
//測試復數加實數
double d;
cin>>real>>imag;
cin>>d;
c3=Complex(real,imag)+d;
cout<<"c1+d=";
cout<<c3;
//測試實數加復數
cin>>d;
cin>>real>>imag;
c1=Complex(real,imag);
c3=d+c1;
cout<<"d+c1=";
cout<<c3;
return 0;
}
輸入
一個復數的實部和虛部,另一個復數的實部和虛部?
一個復數的實部和虛部,一個實數
一個實數,一個復數的實部和虛部
輸出
兩個復數之和、復數和實數之和,實數和復數之和。
樣例輸入
3 4 5 -10 3 4 5 5 3 4樣例輸出
c1+c2=(8.00-6.00i) c1+d=(8.00+4.00i) d+c1=(8.00+4.00i)提示
只提交自己定義的函數部分,控制輸出小數點后兩位,用 setiosflags(ios::fixed);和setprecision(2);控制
#include <iostream> #include <iomanip> using namespace std;class Complex { public:Complex():real(0),imag(0) {}Complex(double r,double i):real(r),imag(i) {}Complex operator+(Complex &);Complex operator+(double &);friend Complex operator+(double&,Complex &);friend ostream& operator << (ostream& output, const Complex& c); private:double real;double imag; };Complex Complex::operator+(Complex &c) {return Complex(real+c.real,imag+c.imag);} Complex Complex::operator+(double &r) {return Complex(real+r,imag);} Complex operator+(double &r,Complex&c) {return Complex(r+c.real,c.imag);} ostream& operator<<(ostream &cout,const Complex &c) {cout<<setiosflags(ios::fixed);cout<<setprecision(2);cout<<'('<<c.real; if(c.imag>0) cout<<'+'; cout<<c.imag<<"i)"<<endl; }int main() {//測試復數加復數double real,imag;cin>>real>>imag;Complex c1(real,imag);cin>>real>>imag;Complex c2(real,imag);Complex c3=c1+c2;cout<<"c1+c2=";cout<<c3;//測試復數加實數double d;cin>>real>>imag;cin>>d;c3=Complex(real,imag)+d;cout<<"c1+d=";cout<<c3;//測試實數加復數cin>>d;cin>>real>>imag;c1=Complex(real,imag);c3=d+c1;cout<<"d+c1=";cout<<c3;return 0; }總結
以上是生活随笔為你收集整理的[YTU]_2535( C++复数运算符重载(+与))的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [YTU]_2354 (实现复数类中的
- 下一篇: [YTU]_2444(C++习题 对象转