如何求数组中奇数元素的和和和偶数元素的乘
How to get sum of odd and multiplication of even element in array
如何在得到值后得到所有奇数的和和和正偶数的乘积我的程序给出了错误并退出。如何解决这个问题,为什么会发生这种错误,如果我输入的值小于5,它会给出内存地址
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
int n,sum=0,mul=0,i,j;
cout<<"How many numbers you want to enter?";
cin>>n;
int arr[n],odd[]={0,0,0,0,0},even[5];
for(i=0;i<n;i++)
{
cout<<"Enter Val "<<i+1<<": ";
cin>>arr[i];
}
for(j=0;j<n;j++)
{
if(arr[j]%2==0)
{
even[j]=arr[j];
}
else
{
odd[j]=arr[j];
}
}
for(j=0;j<n;j++)
{
sum+=odd[j];
mul*=even[j];
}
cout<<"Sum of Odd "<<sum<<endl;
cout<<"Product of Even "<<mul<<endl;
return 0;
}
初始化数组奇数后奇数的和起作用,但乘积仍然没有!
您的代码中存在一些问题。arr[n]
是非标准C++,您只允许自己有5个插槽用于奇数和偶数(如果用户想输入20个数字怎么办?)此外,您总是将第j
个数字写入odd[j]
或even[j]
。。。这意味着,如果第一个数字是奇数,第二个数字是偶数,那么您现在向even[1]
写入了一个值,但从未向even[0]
写入任何内容。您没有正确地填充数组,最终会出现几个未初始化的int
,这使得您的最终计算行为未定义。
简单的解决方案是完全不使用数组来避开所有这些问题,因为你并不真正需要它们:
int odd = 0, even = 1;
cin >> n;
int x;
for (int i = 0; i < n; ++i) {
// get the next value
cin >> x;
// either multiply or add it as appropriate
if (x % 2 == 0) {
even *= x;
}
else {
odd += x;
}
}
所以,我同意Barry提供的答案。然而,如果这是一项学校作业,要求你使用数组,你仍然需要使用它们。
如果是这种情况,为了解决这个问题:
"此外,你总是把第j个数字写为奇数[j]或偶数[j]……这意味着,如果第一个数字是奇数,第二个数字是偶数,你现在把一个值写为偶数[1],但从来没有把任何东西写为偶数[0]。你没有正确地填充数组,最终会得到几个未初始化的int,这会使你的最终计算行为不确定。"
考虑运行用户定义的长度数组(即arr[n]),对数组项进行两种不同的测试:一种是查找偶数元素,另一种是寻找奇数元素。
除非另有说明,否则可能不应任意将even[]和odd[]的数组大小限制为仅五项。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用strcpy将char数组的元素复制到另一个数组
- 求最大元素位置的分治算法
- (也许是NP-Hard)求一个集合的子集总数,使得每个子集在与其所有元素相乘时的值都大于X
- 在给定某些约束的情况下,求出元素之间的最大距离
- 求和数组的每个元素的函数的结果
- 初始值设定项列表中元素的求值顺序
- 从二维数组中给定的索引中求对角线元素的和
- std::initializer_list和元素的求值顺序
- 如何求数组中奇数元素的和和和偶数元素的乘
- 如何求偶数位置上元素的和
- C++ 和 Java 之间的表达式求值顺序有何不同
- 在 N 个元素的数组中求出"P"元素的最小和,以便一起选择不超过"k"个连续元素
- C++算法优化:从N个元素中求出K组合
- 求两个向量之间的最大元素
- 求c++矩阵中最大元素的索引
- 如何求一对向量中元素的个数
- 求向量的一个元素,它是在映射中呈现的
- 初始化列表中元素的求值顺序