1. 程式人生 > >YTUOJ——C++習題 複數類--過載運算子3+

YTUOJ——C++習題 複數類--過載運算子3+

題目描述

請編寫程式,處理一個複數與一個double數相加的運算,結果存放在一個double型的變數d1中,輸出d1的值,再以複數形式輸出此值。定義Complex(複數)類,在成員函式中包含過載型別轉換運算子: 
operator double() { return real; }

輸入

一個複數與一個double數

輸出

d1的值和複數形式的此值

樣例輸入

3 4
2.5

樣例輸出

d1=5.50
c2=(5.50, 0.00)

答案

#include <iostream>
#include <iomanip>
using namespace std;
class Complex
{
public:
    Complex();
    Complex(double r);
    Complex(double r,double i);
    operator double();
    void display();
private:
    double real;
    double imag;
};


///////////////////////////////提交部分///////////////////////////////
Complex::Complex(){
	real = 0;
	imag = 0;
}
Complex::Complex(double r){
	real = r;
	imag = 0;
}
Complex::Complex(double r,double i){
	real = r;
	imag = i;
}
Complex::operator double(){
	return real;
}
void Complex::display(){
	cout<<"("<<real<<", "<<imag<<")"<<endl;
}
///////////////////////////////提交部分///////////////////////////////


int main()
{
    cout<<setiosflags(ios::fixed);
    cout<<setprecision(2);
    double real,imag;
    cin>>real>>imag;
    Complex c1(real,imag);
    double d1;
    cin>>d1;
    d1=d1+c1;
    cout<<"d1="<<d1<<endl;
    Complex c2=Complex(d1);
    cout<<"c2=";
    c2.display();
    return 0;
}