C++ 復(fù)數(shù)相關(guān)函數(shù)(二)

2023-03-20 16:50 更新

另外一個我們需要的操作則是乘法。不像加法那樣,乘法在極坐標系中容易,在笛卡爾坐標系中麻煩些(是相對有點麻煩而已)。
在極坐標系,我們只需將模相乘,角度相加。像往常那樣,我們使用訪問函數(shù)來實現(xiàn)而不必關(guān)心對象的表現(xiàn)形式。

Complex mult (Complex& a, Complex& b) 
{ 
        double mag = a.getMag() * b.getMag() 
        double theta = a.getTheta() + b.getTheta(); 
        Complex product; 
        product.setPolar (mag, theta); 
        return product; 
} 

這兒我們遇到一個小問題,即我們沒有一個構(gòu)造函數(shù)來接收極坐標系的值。添加這樣的一個構(gòu)造函數(shù)也可以,但是要記得只有在參數(shù)不同時才能重載一個函數(shù)(包括構(gòu)造函數(shù))。在這個例子中,我們要添加的構(gòu)造函數(shù)仍然是接收兩個浮點型的參數(shù),所以沒法重載。
另外一個辦法是提供一個訪問函數(shù)來設(shè)置變量的值,為使操作正常進行,我們需要確保當mag與theta的值被設(shè)定時,極坐標的標志位也要設(shè)置為真,同時還要確保笛卡爾坐標系的標志位設(shè)置為假。這是因為,如果我們手動設(shè)置了極坐標的值,笛卡爾坐標系的值就會失效。

void Complex::setPolar (double m, double t) 
{ 
        mag = m;     theta = t; 
        cartesian = false; polar = true; 
} 

作為練習(xí),請寫出對應(yīng)的函數(shù)setCartesian。
為測試mult函數(shù),我們可以這樣做:
Complex c1 (2.0, 3.0);
Complex c2 (3.0, 4.0);

Complex product = mult (c1, c2);
product.printCartesian(); 該程序的輸出結(jié)果為:
-6 + 17i
在這個輸出的背后進行了很多轉(zhuǎn)換。當我們調(diào)用mult時,兩個參數(shù)為被轉(zhuǎn)換為極坐標系的表示形式。結(jié)果也是極坐標形式,當我們調(diào)用printCartesian時,就會再轉(zhuǎn)換回笛卡爾坐標系的形式。沒錯,我們就這樣得到了正確結(jié)果,很奇妙吧。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號