C++-Konsolenprogramm mit der Formel 1/2 * (a + c) * b * sin(gamma)?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

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.


RopickHD 
Fragesteller
 06.10.2022, 20:57

Hab vergessen zu sagen das ich auch nicht überladen darf... Aber trotzdem danke das du es versucht hast

1
Destranix  07.10.2022, 09:10
@RopickHD

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.

1
RopickHD 
Fragesteller
 07.10.2022, 16:54
@Destranix
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"

1
Destranix  07.10.2022, 17:07
@RopickHD

Für ein Parallelogram muss dann c gleich a sein, für ein Rechteck gamma = 0 und für ein Quadrat b = a.

Das kannst du nicht mit Defaultwerten lösen, da du als Defaultwert keine Parameter verwenden kannst.

1
Destranix  07.10.2022, 18:23
@RopickHD

Mit If-Abfragen. Ansonsten wüsste ich keine Lösung, die du verwenden dürftest.

1
RopickHD 
Fragesteller
 07.10.2022, 18:31
@Destranix

Was würde denn bei der If-Abfrage stehen?

0
Destranix  07.10.2022, 18:39
@RopickHD

Du gibst den Argumenten irgendwelche Default-Werte, die invalid sind. Beispielsweise 0 oder negative Werte.
In der If-Abfrage prüfst du auf diese und wählst je nachdem die passende Berechnungsformel aus.

1
RopickHD 
Fragesteller
 07.10.2022, 18:46
@Destranix

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?

0
Destranix  07.10.2022, 18:55
@RopickHD

Ob du nun b auf a setzt oder gleich a schreibst sollte auf dasselbe hinauslaufen.

1
RopickHD 
Fragesteller
 11.10.2022, 17:42
@Destranix

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

1