If-Else Exit
-
-
@DirkB eigentlich möchte ich nur den Mittelwert (der Leistung) aller eingelesen Fahrzeuge ausgeben..
und Nein, leider steht das nur Zeile 3. Sonst nichts.
-
@NoobHunter12 sagte in If-Else Exit:
eigentlich möchte ich nur den Mittelwert (der Leistung) aller eingelesen Fahrzeuge ausgeben..
Und warum schreibst du dann nach Mittelwert noch die << ?
-
@DirkB weil ich es nicht besser wusste. jetzt ist der fehler weg. Danke dir
-
@NoobHunter12 sagte in If-Else Exit:
@DirkB eigentlich möchte ich nur den Mittelwert (der Leistung) aller eingelesen Fahrzeuge ausgeben..
Nein
Den Wert "Mittelwert" will ich dann in der Main ausgeben,
Deswegen hat die Funktion ja auch ein double als Ergebnis. Du gibst nichts zurück, was natürlich ein Fehler ist.
Außerdem berechnest du den Mittelwert von genau 2 Fahrzeugen, unabhängig von der tatsächlichen Anzahl.
-
@manni66 d.h am ende fehlt noch ein "return Mittelwert" ?
Ja das stimmt. ich würde lieber den mittelwert aller eingelesenen Fahrzeuge berechnen, allerdings schaffe ich es nicht auf die information zuzugreifen bzw die Information in die averagePower() funktion zu übergeben
-
@NoobHunter12 sagte in If-Else Exit:
allerdings schaffe ich es nicht auf die information zuzugreifen bzw die Information in die averagePower() funktion zu übergeben
Du kannst auf das Element 0 und 1 zugreifen, aber nicht auf 2?
Du weißt nicht, wieviel Fahrzeuge in deinem Array sind?
-
@DirkB auf 2 könnte ich auch indem ich einfach "i" quasi inkrementiere, aber das ist ja mit sicherheit nicht der gesucht weg.
Genau. Mein Problem ist, dass ist nicht weiß wie ich alle Leistungen aller Fahrzeuge aus dem Array übergebe um in der Funktion averagePower() den Mittelwert auszurechnen.
-
@NoobHunter12 mit i inkrementieren meine ich eine auflistung aller arrayplätze:
Fahrzeug [0]
+
Fahrzeug[1]
+
Fahrzeug[2]
+
....
Fahrzeug[9]
/2
-
Du weißt doch, wieviel Einträge in dem Array sind, in Deiner main steht doch:
size_t anzahl = readVehicle(fahrzeug);
Dein Funktionskopf sollte also so aussehen:
double averagePower(const Vehicle*fahrzeug, size_t anzahl)
Außerdem musst Du beim anschließenden dividieren überlegen, ob Du wirklich eine Integerdivision haben willst, falls ja, brauchst Du keinen double als Rückgabetyp.
-
@Belli okay verstehe. demnach könnte ich dann anzahl nutzen um zu dividieren.
In der Aufgabe steht: "Das Ergebnis ist eine Fließkommazahl".
-
@Belli (const Vehicle*fahrzeug) bedeutet das nicht, dass immer ein konstantes Fahrzeug an die Funktion übergeben wird?
-
@NoobHunter12
Es wird ein Zeiger auf ein konstantes Fahrzeug übergeben ...
Du willst das Fahrzeug ja in der Funktion nicht verändern.
-
@Belli bekomme ich dann nicht immer nur eine Leistung übergeben? oder bekomme ich durch die schleife alle Leistungen übergeben?
-
@NoobHunter12 Du bekommst den Anfang vom Array übergeben.
Da in einem Array alle Elemente fortlaufend im Speicher liegen, kommst du somit auch an die anderen Element ran.Du bekommst den Anfang vom Array, eine Adresse.
-
Genauso wie in readVehicle ...
-
double averagePower(const Vehicle*fahrzeug, size_t anzahl,)
{int x=0 for (int k {0}; k < anzahl; k++) { double Mittelwert = (fahrzeug[k].power+x)/2; return Mittelwert; }
};
Meine Annahme: Ich übergebe das Array und die Gesamtanzahl der eingelesenen Fahrzeuge an die Funktion.
In der Funktion Frage ich durch die For Bedingung alle Fahrzeugleistungen des Arrays ab und addiere sie auf X [x dient quasi als Zwischenspeicher der vorherigen Leistung].
-
@NoobHunter12 sagte in If-Else Exit:
double averagePower(const Vehicle*fahrzeug, size_t anzahl,) { int x=0 for (int k {0}; k < anzahl; k++) { double Mittelwert = (fahrzeug[k].power+x)/2; return Mittelwert; } }
X ist immer 0
du springst gleich im ersten Schleifendurchgang (k = 0) aus der Funktion raus.
Warum teilst du durch 2?
Mittelwert ist nur innerhalb der for-Schleife bekannt.Überlege dir vorher wie das ablaufen soll
-
double averagePower(const Vehicle*fahrzeug, size_t anzahl) { int x; for (int k ; k < anzahl; k++) { double Mittelwert = (fahrzeug[k].power)/anzahl; }; cout<< Mittelwert; return Mittelwert; };
Danke für die Hinweise. Ich hoffe ich konnte alle Fehler beheben (?)
-
@NoobHunter12 sagte in If-Else Exit:
Ich hoffe ich konnte alle Fehler beheben (?)
Nein.
Aber probier es aus.
Und achte auch auf alle Warnungen vom Compiler - ruhig bei höchster Warnstufe.Du weißt schon, wie der Mittelwert definiert ist?
Irgendwas mit Summe ist dabei.