Fehler im Code beheben:
#include <iostream>
#include <exception>
using namespace std;
void check_sum_parity(int* arr, int arrayLength) {
for (int i = 0; i < arrayLength; i++) {
sum_of_numbers += arr[i];
}
if (sum_of_numbers % 2 == 0) {
cout << "Sum is odd." << endl;
}
else {
cout << "Sum is even." << endl;
}
}
int main(void) {
int arr[] = { 10, 2, 21, 50};
int arrayLength = sizeof(arr) / sizeof(int);
check_sum_parity(arr, arrayLength);
}
#include <iostream>
#include <exception>
using namespace std;
void check_sum_parity(int* arr, int arrayLength) {
int sum_of_numbers = 0; // Initialize sum_of_numbers
for (int i = 0; i < arrayLength; i++) {
sum_of_numbers += arr[i];
}
if (sum_of_numbers % 2 == 0) {
cout << "Sum is even." << endl;
}
else {
cout << "Sum is odd." << endl;
}
}
int main(void) {
int arr[] = { 10, 2, 21, 50};
int arrayLength = sizeof(arr) / sizeof(int);
check_sum_parity(arr, arrayLength);
}
Erläuterung der Korrektur:
Im ursprünglichen Code ist ein Problem mit der Variable sum_of_numbers
aufgetreten. Sie wurde ohne Initialisierung verwendet, was zu nicht definiertem Verhalten führte.
Die Lösung ist einfach: Wir initialisieren sum_of_numbers
auf 0 am Anfang der check_sum_parity
-Funktion. Dadurch wird sichergestellt, dass die Variable einen definierten Wert hat, bevor sie in der Schleife verwendet wird.
Hier seht ihr eine Übersicht des korrigierten Codes:
int sum_of_numbers = 0;
: Diese Zeile initialisiert die Variable sum_of_numbers
auf 0.
for (int i = 0; i < arrayLength; i++) { sum_of_numbers += arr[i]; }
: Diese Schleife durchläuft das Array und fügt jedes Element der Variable sum_of_numbers
hinzu.
if (sum_of_numbers % 2 == 0) { ... } else { ... }
: Diese bedingte Anweisung prüft, ob sum_of_numbers
gerade oder ungerade ist, und gibt die entsprechende Nachricht aus.
Jetzt berechnet der Code die Summe der Array-Elemente korrekt und bestimmt, ob die Summe gerade oder ungerade ist.