Zum Inhalt springen

Wichtig: Kreissegment


Prinz01

Empfohlene Beiträge

Hallo - ich versuch schon die ganze Zeit, den Kreissegment im C++ zu berechnen - aber es kommt immer was andereres raus :(

#include <iostream>

#include <math.h>

using namespace std;

int main ()

{

double a, r, pi;

double sin(double a);

cout << "Mittelpunktswinkel (Gradmaß):\t";

cin >> a;

cout << "Radius:\t\t";

cin >> r;

pi = 3.14159;

cout << "KreissegmentsFlaeche:\t" << float (((a / 360) * (r * r) * pi) - ((1 / 2) * (r * r) * sin(a))) << endl;

return 0;

}

formel für kreissegment:

A= (alpha/360) * r^2 * PI - (1/2) * r^2 * sin(alpha)

kann mir bitte einer sagen - was ich da falsch mache???

thx

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die Winkelfunktionen aus <math.h> (bzw. <cmath>, wie die Headerdatei bei C++ heißt) gehen davon aus, dass der Winkel in Bogenmaß angegeben wird, nicht in Grad. Auch deine Formel müsstest du dementsprechend ändern.

P.S.: Wenn du Code-Tags benutzt, geht die Einrückung deines Codes nicht verloren.

P.P.S.: Es ist nicht besonders höflich, seine Frage mit dem Zusatz "wichtig" zu versehen. Damit sagst du, dass die Fragen der Anderen nicht wichtig sind.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also ich versteh das nicht ganz
Weißt du, was Bogenmaß ist? Ein ganzer Kreis = 360° sind 2 Pi. Ein rechter Winkel ist Pi/2.

Wenn der Benutzer den Winkel in Grad eingeben soll, musst du ihn mit Pi multiplizieren und durch 180 teilen, bevor du ihn an eine der Winkelfunkionen übergibst. Die 360 in der Formel musst du durch 2 Pi ersetzen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also ich habs veruscht - so wie du es sagtest - aber wieder ein Fehler??? :(

#include <iostream>

#include <math.h>

using namespace std;

int main ()

{

double a, r, pi;

double sin(double a);cout << "Mittelpunktswinkel (Gradmaß):\t";

cin >> a;

pi = 3.14159;

a = (a * pi) / 180;

cout << "Radius:\t\t";

cin >> r;

cout << "KreissegmentsFlaeche:\t" << (((a / (2*pi)) * (r * r) * pi) - ((1 / 2) * (r * r) * sin(a))) << endl;

return 0;

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also ich habs veruscht - so wie du es sagtest - aber wieder ein Fehler??? :(
Normalerweise ist eine ausführlichere Fehlerbeschreibung immer besser. Aber hier sehe ich auch so, wo es klemmt:

1 / 2
Dieser Ausdruck in deiner Formel ist immer 0. Das liegt daran, dass der Compiler hier zwei ganzzahlige Operanden sieht und demzufolge eine Integerdivision ausführt. Das Ergebnis ist 0. Du könntest entweder einen der beiden Operanden durch ein Double-Literal ersetzen (2.0) oder die Formel umstellen und am Ende durch zwei teilst. Sobald nämlich mindestens einer der beiden Operanden keinen Ganzzahltyp mehr hat, macht der Compiler eine Fließkommadivision.
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dieser Ausdruck in deiner Formel ist immer 0. Das liegt daran, dass der Compiler hier zwei ganzzahlige Operanden sieht und demzufolge eine Integerdivision ausführt. Das Ergebnis ist 0. Du könntest entweder einen der beiden Operanden durch ein Double-Literal ersetzen (2.0) oder die Formel umstellen und am Ende durch zwei teilst. Sobald nämlich mindestens einer der beiden Operanden keinen Ganzzahltyp mehr hat, macht der Compiler eine Fließkommadivision.

also es sieht jetzt so bei mir aus - und die richtige Lösung kommt endlich raus:

cout << "KreissegmentsFlaeche:\t" << (((a / (2*pi)) * (r * r) * pi) - ((0.5) * (r * r) * sin(a))) << endl;

meinst du mit double-literal - 0.5??

und wieso es vorher 0 kam - hab ich auch nicht verstanden - aber es funktioniert jetzt - das zählt :)

Danke for your help :uli

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...