C++-Konsolenprogramm mit der Formel 1/2 * (a + c) * b * sin(gamma)?
Also ich soll eine Funktion in c++ programmieren wo ich a, b, c und gamma(eine gradzahl) bekomme. Mit diesen lässt sich die Formel 1/2 * (a + c) * b * sin(gamma) einfach berechnen. Doch ich muss ebenfalls mit Defaultwerten arbeiten, so dass wenn ich a und b bekomme ich a*b zurückgeben muss. Wenn ich nur a bekomme a*a und wenn ich a, b und gamma bekomme muss bei der Formel das "1/2" weg.
Ich weiß einfach nicht wie ich das machen soll. Welche Defaultwerte würden bei der Formel a*a ergeben (wenn ich nur a bekomme), geschweige denn a,b etc.
Bin für jede Hilfe dankbar und bei Fragen kann ich versuchen es besser zu erklären.
Die Main-Funktion sieht so aus:
Die Funktion sieht bis jetzt so aus:
1 Antwort
Da wirst du vermutlich die methode überladen müssen, damit das sinnvoll klappt.
Beispielsweise:
double trapezFlaeche(float a, float b, float gamma){
return trapezFlaeche(a, b, gamma, 0.0f);
}
Damit kannst du aber nur manche Fälle abdecken. Vielleicht reicht das aber für die Sondrefälle, die du definieren sollst. Evtl. kannst du auch die Reihenfolge der Parameter ändern, wenn die Aufgabenstellung das zulässt.
Dann könnte man es mit If-Anweisungen lösen womöglich? Dann müsstest du den Default-Wert auf einen Wert setzen, der nicht normal auftauchen kann.
Um dir genauere Hinweise zu geben müstest du mir noch einmal genauer schildern, welche Fälle auftreten können und wie das Ergebnis dann aussehen soll.
Also das soll dann in der Konsole rauskommen:
a = 2.0, b = 3.5, gamma = 45.0, c = 4.0 => Fläche: 7.42462
a = 3.0, b = 4.0, gamma = 45.0 => Fläche: 8.48528
a = 4.0, b = 5.0 => Fläche: 20
a = 2.0 => Fläche: 4
Also hier steht dann immer was angegeben wurde und die Fläche die berechnet wurde.
Ich weiß halt nicht ob ich nur die Defaultwerte benutzen darf oder auch if-Anweisungen etc. Also wäre das überhaupt möglich nur mit den Defaultwerten oder brauch ich die if-Anweisungen?
Hier nochmal der Aufgabentext:
"Ergänzen Sie das Programmgerippe um eine Funktion trapezFlaeche(...), welche die Fläche eines Trapezes berechnet. Nutzen sie kein Überladen. Verwenden Sie für die Lösung geeignete Defaultwerte für Parameter.
Mit den Bezeichnungen der Seiten und Winkel wie in der Abbildung berechnet sich die Fläche mit 1/2 * (a + c) * b * sin(gamma). Diese allgemeine Formel kann übrigens auch für Quadrate, Rechtecke und Parallelogramme genutzt werden, die ja nur Spezialfälle eines Trapezes sind! Die Parameter der Funktion sollen die Länge der beiden parallelen Seiten, die Länge der Seite b und den Winkel gamma angeben. Schreiben Sie die Funktion so, dass ein Aufrufer
• für ein Quadrat nur die Seitenlänge der Seite a,
• für ein Rechteck nur die Seitenlängen a und b und
• für ein Parallelogramm nur die Seitenlängen a und b und den Winkel gamma
• für ein Trapez die Seitenlängen a, b und c und den Winkel gamma angeben muss.
Das Hauptprogramm ruft die Funktion viermal auf mit den folgenden Werten:
a) a = 2.0, b = 3.5, gamma = 45.0, c = 4.0
b) a = 3.0, b = 4.0, gamma = 45.0
c) a = 4.0, b = 5.0
d) a = 2.0"
Daran hab ich auch gedacht, aber da steht ja "Diese allgemeine Formel kann übrigens auch für Quadrate, Rechtecke und Parallelogramme genutzt werden, die ja nur Spezialfälle eines Trapezes sind!" weswegen ich denke das man die formel nicht ändern darf oder?
Hab den Prof gefragt, ob das so geht und er hat ja gesagt. Hab das dann direkt in paar Minuten gemacht. Danke dir vielmals für die Hilfe :D
Hab vergessen zu sagen das ich auch nicht überladen darf... Aber trotzdem danke das du es versucht hast