對於複數陣列,操作a * = b是否存在乘法版本? 換句話說,將複數(大量元素或未知長度)數組中的所有元素相乘並將結果存儲在複雜雙變量中的最有效方法是什麼?複數乘法陣列乘法
在下面的代碼中,Ans1提供了正確的答案,但是,對於我的應用程序,它將不會有意義地處理數組中的每個元素,因爲將會有數百個元素。理想情況下,我想要一個循環(與Ans2類似),它將數組的所有元素相乘並存儲答案。如果我不將Ans2初始化爲1.0,1.0,則答案將爲0,0,因爲這些元素將乘以0.然而,使用1.0,1.0進行初始化不會在我們處理複數時起作用。
編輯 - 我無法手動解決每個元素的原因是因爲這將鏈接到一個更大的程序,其中數組'a'的元素將來自其他地方,並且'a'的長度將會變化。
理想ANSWER =複雜元素[0] *複雜元素[1] 複雜元素[2] ....複雜元素[n]的
/*
Complex Array Multiplication
*/
#include <complex>
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n = 3;
complex<double> Ans1, Ans2(1.0,1.0);
complex<double> a[n];
a[0] = complex<double>(1.0, 1.5);
a[1] = complex<double>(-1.0, 1.5);
a[2] = complex<double>(1.0, -1.5);
Ans1 = (a[0]*a[1]*a[2]);
cout << "\nAns1 = " << Ans1;
for (int i =0; i < n; i++) {
Ans2 = Ans2 * a[i];
}
cout << "\nAns2 = " << Ans2;
getchar();
}
也許這可以非常容易地但我做錯過了一些東西。提前致謝。
乘「數「對於今天的計算機來說,複雜的價值觀實際上並不是一個挑戰......」 – filmor
「對於我的應用程序來說,它不會對數組中的每個元素都有意義,因爲將會有數百個」你在衝卡上寫這個程序嗎? – djechlin
確實如此,但必須手動鍵入每個元素,就像我爲Ans1所做的那樣,可能不是使用當今計算機的最有效方式。我剛剛創建了數組A來填充值,但對於我的應用程序,這些值將來自其他地方。 – user2550888