Ich schreibe einen Array-basierten Code, der nach dem Kompilieren einige verwirrende Fehler verursacht. Ich habe im Internet nach Beispielcode gesucht, den ich mehr oder weniger verstehe, aber es ist hilfreich für mich, Fehler in meinem eigenen Code/Gedankenprozess zu identifizieren.Array und Größe der Probleme beim Kompilieren von Fehlern C++
Die Aufgabe besteht darin, eine Funktion zu erstellen, die ein Array mit einer unbekannten Anzahl von Ganzzahlen akzeptiert und die geraden Zahlen im Array summiert. Mir wurde gesagt, dass der letzte Eintrag des Arrays -1 ist, aber ich denke nicht, dass diese Information nützlich ist.
Hier ist mein Code:
#include <iostream>
using namespace std;
int sumEven(int myArray[])
{
int len = (sizeof(myArray)/sizeof(myArray[0]));
int i = 0;
int count = 0;
while (i < len)
{
if (myArray[i] % 2 == 0)
{
count = count + myArray[i];
}
i++;
}
return count;
}
Ich versuche len
wie die Anzahl der Array-Elemente zu definieren. Ich denke, dass dies nicht funktionieren, da ein Fehler zu dieser Linie bezieht sich:
prog.cpp:13:18: error: sizeof on array function parameter will return size of 'int *' instead of 'int []' [-Werror,-Wsizeof-array-argument]
int len = (sizeof(myArray)/sizeof(myArray[0]));
^
prog.cpp:11:17: note: declared here
int sumEven(int myArray[])
^
1 error generated.
Ich habe Erfahrung mit Matlab, Mathematica und Python, und so kann meine C++ Formatierung seltsam sein. Danke für einen Blick.
Sie müssen nicht die Länge finden, nur iterieren, bis Sie -1 drücken. – pstrjds
Ich plane für den Fall, dass -1 mehr als einmal auftritt. –
Von der Formulierung Ihrer Frage habe ich das als Hausaufgabe genommen und Ihnen gesagt, dass der letzte Eintrag -1 ist. Wenn das die Bedingung ist, die Sie erhalten, dann können Sie aufhören, wenn Sie eine -1 finden. Das Problem Statement gibt Ihnen im Grunde die Lizenz, an diesem Punkt zu stoppen, so dass Sie den Fall einer zusätzlichen -1 nicht behandeln müssen. – pstrjds