[英]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.