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

2023-03-20 16:50 更新

另外一個(gè)我們需要的操作則是乘法。不像加法那樣,乘法在極坐標(biāo)系中容易,在笛卡爾坐標(biāo)系中麻煩些(是相對(duì)有點(diǎn)麻煩而已)。
在極坐標(biāo)系,我們只需將模相乘,角度相加。像往常那樣,我們使用訪問(wèn)函數(shù)來(lái)實(shí)現(xiàn)而不必關(guān)心對(duì)象的表現(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è)小問(wèn)題,即我們沒(méi)有一個(gè)構(gòu)造函數(shù)來(lái)接收極坐標(biāo)系的值。添加這樣的一個(gè)構(gòu)造函數(shù)也可以,但是要記得只有在參數(shù)不同時(shí)才能重載一個(gè)函數(shù)(包括構(gòu)造函數(shù))。在這個(gè)例子中,我們要添加的構(gòu)造函數(shù)仍然是接收兩個(gè)浮點(diǎn)型的參數(shù),所以沒(méi)法重載。
另外一個(gè)辦法是提供一個(gè)訪問(wèn)函數(shù)來(lái)設(shè)置變量的值,為使操作正常進(jìn)行,我們需要確保當(dāng)mag與theta的值被設(shè)定時(shí),極坐標(biāo)的標(biāo)志位也要設(shè)置為真,同時(shí)還要確保笛卡爾坐標(biāo)系的標(biāo)志位設(shè)置為假。這是因?yàn)?,如果我們手?dòng)設(shè)置了極坐標(biāo)的值,笛卡爾坐標(biāo)系的值就會(huì)失效。

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

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

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

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)