Ich möchte eine Funktion haben, die die Summe der verschiedenen (nicht duplizierten) Werte aus einem Array zurückgibt: Wenn ich {3, 3, 1, 5}
habe, möchte ich Summe von 3 + 1 + 5 = 9
haben.Summe verschiedener Zahlen in einem Array
Mein Versuch war:
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);
}
Es gibt 25
und ich glaube, ich weiß, warum, aber ich weiß nicht, wie es zu verbessern. Was soll ich ändern?
Bitte erläutern Sie Ihre „Warum“ (Sie sagten, Sie denken, Sie wissen, warum es nicht funktioniert) in Frage. Formatieren Sie Ihren Code außerdem, um besser lesbar zu sein. – Tom
(1) Sie verlassen die Grenzen des Arrays; (2) Sie vergleichen den Index, aber nicht den Wert des Elements für die Duplizierungsprüfung. – songyuanyao
Sie haben undefiniertes Verhalten, Out-of-bounds-Zugriff des Arrays – Rakete1111