【发布时间】:2016-11-22 09:18:55
【问题描述】:
我想要一个从数组中返回不同(非重复)值总和的函数:如果我有{3, 3, 1, 5},我想要有3 + 1 + 5 = 9 的总和。
我的尝试是:
int sumdiff(int* t, int size){
int sum=0;
for (int i=0; i<=size;i++){
for(int j=i; j<=size;j++){
if(t[i]!=t[j])
sum=sum+t[i];
}
}
return sum;
}
int main()
{
int t[4]={3, 3, 1, 5};
cout << sumdiff(t, 4);
}
它返回25,我想我知道为什么,但我不知道如何改进它。我应该改变什么?
【问题讨论】:
-
请在问题中解释您的“为什么”(您说您认为您知道它为什么不起作用)。此外,格式化您的代码,使其更具可读性。
-
(1) 你超出了数组的范围; (2) 您正在比较索引而不是元素的值以进行重复检查。
-
你有未定义的行为,超出了数组的访问范围
-
现在我想我正在比较这些值。