W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
另外一個(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é)果,很奇妙吧。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: