If-Else Exit
-
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"
-
@NoobHunter12 Ja wenn es genau so steht, es ist nur als Hinweis gedacht. Dann übergibst du halt das bereits deklarierte Vehicle an averagePower und löschst die Redeklaration.
-
double averagePower( Vehicle*fahrzeug, size_t anzahl) { double gesamtpower {0}; for (int k=0 ; k <= anzahl; k++) { gesamtpower= gesamtpower + fahrzeug[k].power; } cout << "leistung:" << (gesamtpower/anzahl); return gesamtpower/anzahl; }; int main() { Vehicle fahrzeug[maxVehicles];//Array
Vielleicht ist dir das ja eine Hilfe.
Ich möchte das Ergebniss der Funktion averagePower in der Main ausgeben.
Mein Array habe ich mit " Vehicle fahrzeug[maxVehicles]; deklariert
-
Also ich erahne so, dass
averagePower(fahrzeug, maxVehicles)
anstelle vonaveragePower(vehicles, 10)
stehen sollte. Aber maxVehicles muss konstant sein, bzw. zur Kompilierzeit feststehen, sonst geht das nicht.Edit: Also normalerweise sollte es so sein, auf Ideone geht es trotzdem.
-
ohja er rechnet jetzt tatsächlich was
allerdings nicht ganz richtig.
Wenn ich vorher für fahrzeug1 20 ps eingebe und für fahrzeug2 10 ps eingebe gibt er mir 6,06ps als Mittelwert aus.
Könnte das an meinem return in der averagePower Funktion liegen?Edit: auch wenn ich andere Werte für die Leistung der Fahrzeuge eingebe gibt er trotzdem den gleichen Mittelwert aus (6,069...)
-
Eher an
for (int k=0 ; k <= anzahl; k++)
,for (int k=0 ; k < anzahl; k++)
sollte es in Ordnung bringen, da sonst die Schlaufe einmal zuviel durchlaufen wird.
-
Habe es geändert. Leider gibt er wieder 6,06..aus auch wenn die 4 und folgende nachkommastelle ein bisschen anders ist als vorher