我对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;
}
答案 0 :(得分:1)
你所拥有的是一个简单的数学错误。您将System.setProperty("hadoop.home.dir", "c:/winutil/");
System.setProperty("spark.sql.warehouse.dir", "file:///C:/spark-warehouse");
val conf = new SparkConf().setAppName("test").setMaster("local[*]")
val sc = new SparkContext(conf)
val lines = sc.textFile("C:/user.txt")
变量声明为0,任何乘以0的值等于0,如果将product
的值更改为1,它将解决您的问题。
答案 1 :(得分:0)
变量product
初始化为0,因此涉及它的任何乘法的乘积也将为0.将其初始化为1,即乘法的中性元素,您应该得到正确的结果。
答案 2 :(得分:0)
首先,您的错误是将产品初始化为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