簡體   English   中英

c ++ - 查找數組中元素的總和和乘積

[英]c++ - finding sum and products of elements in array

我對 C++ 很陌生,我遇到了這個問題。 它顯示了正確的總和,但產品不是。

用戶指定他們將輸入多少個數字,輸入數字,然后程序打印出所有輸入數字的總和和乘積。

它的問題似乎是什么?

這是代碼:

#include <iostream>

using namespace std;
int main()
{
int arr[20],i,n,sum=0,product=0;
cout<<"How many elements you want to enter?: ";
cin>>n;


cout << "Please enter " << n << " values to find their sum and product" <<endl;

for(i=0;i<n;i++)
{
cin >> arr[i];
cout << "value #" << i << ": " << arr[i] << " entered." << endl;
}

for(i=0;i<n;i++)
{
sum=sum+arr[i];
}

 for(i=0;i<n;i++)
 {
 product=product*arr[i];
}
cout<<"Sum is "<<sum<<endl;
cout<<"Product is "<<product;



 return 0;
}

你所擁有的是一個簡單的數學錯誤。 您將product變量聲明為 0,乘​​以 0 的任何值都等於 0,如果您將product的值更改為 1,它將解決您的問題。

首先,你的錯誤是你用 0 初始化產品。此外,這是一種使用 C++ 算法添加和相乘數組元素的“優雅”方法:

#include<functional>
#include<numeric>
#include<vector>

using namespace std;

int main(){
   vector<int> nums = { 1,2,3,4,5 };
   vector<int> sums(nums.size(), 0);
   vector<int>products(nums.size());
   std::partial_sum(nums.begin(), nums.end(), sums.begin());
   std::partial_sum(nums.begin(), nums.end(), products.begin(), std::multiplies<int>());
}

現在向量sums的元素包含nums向量的運行和: 1, 3, 6 ,10, 15 而products向量的元素包含運行乘積:1, 2, 6, 24, 120

變量product被初始化為0,因此任何與它相乘的乘積也將為0。將其初始化為1,即乘法的中性元素,您應該得到正確的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM