Winkelfunktionen
Schreibt ein Programm, daß einen Winkel im rechtwinkligen Dreieck an Hand von zwei gegebenen Seitenlängen bestimmt. Das Programm erwartet zu jeder Seite einen Parameter, der anzeigt um welche Seite es sich handelt, und die zu dieser Seite gehörende Länge.
Bei unzulässigen Eingaben oder ähnlichen Fehlern (zu beachten ist z.B., daß immer genau zwei (verschiedene) Seiten mit dazugehöriger Seitenlänge angegeben werden, die Hypotenuse (natürlich) immer länger als eine Kathete ist, Seiten länger als Null sein müssen) soll die Hilfe ausgegeben werden.
Ansonsten soll eine Ausgabe dieser Form erscheinen:
% ./ueb03 -a 33 -g 45 Ankathete: 33.00 Gegenkathete: 45.00 -> Winkel: 53.75 Grad % ./ueb03 -g 45 -a 33 Gegenkathete: 45.00 Ankathete: 33.00 -> Winkel: 53.75 Grad % ./ueb03 -y 33 -a 32.999999 Hypotenuse: 33.00 Ankathete: 33.00 -> Winkel: 0.01 Grad % ./ueb03 -y 33 -a 32.9999999999999999999999999 usage: ueb03 [-h, -a "Seitenlaenge", -g "Seitenlaenge", -h "Seitenlaenge"] -h: Hilfe -a: Ankathete -g: Gegenkathete -y: Hypotenuse % ./ueb03 -g 45 -a foo usage: ueb03 [-h, -a "Seitenlaenge", -g "Seitenlaenge", -h "Seitenlaenge"] -h: Hilfe -a: Ankathete -g: Gegenkathete -y: Hypotenuse
Alle Zahlen sollen auf zwei Nachkommastellen mathematisch korrekt gerundet werden. Winkel werden in Grad angegeben (kein Bogenmaß). Angegebene Seiten werden in der Ausgabe in der gleichen Reihenfolge wiederholt, wie sie eingegeben wurden. Haltet Euch bei der Ausgabe am besten an die obigen Beispiele, um Fehler beim automatischen Test zu vermeiden ;-)
Modularisierung
In dieser Übung wollen wir nun auch das Konzept der Modularisierung benutzen. Daher implementiert bitte für das Programm diese Schnittstelle.
Es empfiehlt sich auf jeden Fall so weit und so gut es geht auch intern zu modularisieren, da wir vielleicht auf dieser Übung aufbauen werden und es euch die spätere Arbeit vereinfachen wird.
Hinweise
-lm
benötigt. Fügt diese also eurem Makefile hinzu.DBL_EPSILON
aus der Headerdatei float.h benutzt werden.double d1, d2;
/* ... */
if (fabs (d1 - d2) < DBL_EPSILON)
{
/* d1 und d2 sind gleich */
}
else
{
/* d1 und d2 sind verschieden */
}
if (fabs (d1) < DBL_EPSILON)
{
/* d1 ist gleich 0 */
}
else
{
/* d1 ist ungleich 0 */
}
Viel Erfolg!
Download Beispiel-Lösungsvorschlag, Quelltext inkl. Projektdateien für VC6 (ZIP-Archiv, 51 KB)
Gefällt dir die C Übungsaufgabe? Schreibe doch einen Kommentar...
Diese Website benutzt Cookies. 🍪 Wenn Sie die Website weiter nutzen, stimmen Sie der Verwendung von Cookies zu. Mehr Infos