If-Else Exit
-
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.
-
@NoobHunter12 sagte in If-Else Exit:
Ich hoffe ich konnte alle Fehler beheben (?)
Der Compiler sagt: NEIN!
-
double Mittelwert = (fahrzeug[k].power+x)/anzahl;
in der Zeile hatte ich natürlich das +x vergessen.
double averagePower(const Vehicle*fahrzeug, size_t anzahl) { int x; for (int k ; k < anzahl; k++) { double Mittelwert = (fahrzeug[k].power+x)/anzahl; cout<< Mittelwert; return Mittelwert; } };
So steht mein Code aktuell drin und der Compiler merkt nichts an. (Ob damit die gewünschte Aufgabe erfüllt wird ist noch unklar)
Ja die Summe ist = Addition aller Einzelwerte geteilt durch die Anzahl der Einzelwerte.
-
-
Vor der Schleife:
double gesamtpower{0};
In der Schleife:
gesamtpower = gesamtpower + fahrzeug[k].power;
Nach der Schleife:
return gesamtpower / anzahl;Was soll x?
-
double averagePower(const Vehicle*fahrzeug, size_t anzahl) { double gesamtpower {0}; for (int k ; k < anzahl; k++) { gesamtpower= gesamtpower + fahrzeug[k].power; } return gesamtpower/ anzahl; };
Das ist dann jetzt die Funktion..
Das heißt doch dass die Funktion am Ende den Durchschnittswert returned bekommt richtig?
Wenn ich dann in der Main den Wert ausgeben lassen möchte muss ich "nur" die Funktion averagePower in der Main aufrufen?
-
Die Funktion returned dss, was hinter return steht ...
Im Schleifenkopf sollte k noch initialisiert werden!Und dann testen, was passiert, das musst Du doch nicht alles fragen?!
-
int main() { cout<<"\nDie durchschnittliche Leistung ist: " <<averagePower(const Vehicle*fahrzeug, size_t anzahl); }
So möchte ich mir jetzt die Durchschnittsleistung ausgeben lassen.
Fehler error: expected primary-expression before "const"
-
@NoobHunter12 Vielleicht sowas?
int main() { Vehicle vehicles[10]; cout << "Die durchschnittliche Leistung ist: " << averagePower(vehicles, 10) << endl; }
Kann nicht genauer anhand der letzten Beiträge erkennen, was genau stehen muss.
Edit: Obwohl ist vielleicht nicht so gut, aber so ist es auch nur wenig besser. Je nach dem.
#include <iostream> #include <array> int main() { std::array<Vehicle, 10> vehicles; std::cout << "Die durchschnittliche Leistung ist: " << averagePower(vehicles.data(), vehicles.size()) << std::endl; }
-
@titan99_
Funktioniert leider nicht - Vehicle sei dann "redeclared"