C++ programmieren (Dreieck berechnen)?
Ich habe ein Problem beim programmieren.
Folgendes Programm muss ich programmieren für die Schule:
Durch Eingabe der zwei Seite a & b und des Winkels y wird die 3. Seite c und die 2 restlichen Winkel berechnet.
Programmiersprache: C++
Folgende Formeln sind vorgegeben c2 = a2 + b2 -2ab * cos(y) sin(alpha) : sin(beta) = a : b
Bei einem 90° Winkel, wird die Meldung Pythagoras angezeigt.
Mit dem einfügen der Formeln habe ich ziemlich Mühe. Vielen Dank für die Tipps!
Folgendes habe ich bereits:
include <math.h>int main(void){ int a, b, c, alpha, beta, gamma, wid;
do {
printf("Bitte geben Sie die Seite a ein: ");
scanf("%d", &a);
}
while(a<=0);
do
{
printf("Bitte geben Sie nun die Seite b ein: ");
scanf("%d", &b);
}
while(b<=0);
do
{
printf("Geben Sie bitte den Winkel y in Grad ein: ");
scanf("%d", &gamma);
}
while((gamma>180) || (gamma<=0));
if(gamma==90)
printf("Rechtwinkliges Dreieck: Berechnung mit dem Satz von Pythagoras. \n");
else
c= c*c==a*a+b*b-2*a*b*cos(gamma);
sqrt(c);
printf("Seite c ist %d lang \n",c );
//sin(alpha) / sin(beta) == a/b;
printf("Der Winkel Alpha ist %d° gross. \n", alpha);
printf("Der Winkel Beta ist %d° gross. \n", beta);
return 0; }
2 Antworten
Hi,
habe leider ewig kein Dreieck mehr berechnet :P
Aber die Zeile ist mit:
c= c*c==a*a+b*b-2*a*b*cos(gamma);
Wenn du von der Formel ausgehst: c2 = a2 + b2 -2ab * cos(y) sagst du in deinem Code gerade:
c = c * c ist das gleiche wie a * a + b * b - 2 * a * b *cos(gamma)
Deine Formel sollte aber heißen:
c = (a*a) + (b*b) - (2*a*b) * cos(gamma);
c ist hier dann noch c2 und du ziehst (wie du es schon richtig machst) die Wurzel.
//sin(alpha) / sin(beta) == a/b;
Das sagt mir leider gar nichts mehr.
Anmerkung:
Findest du den Datentyp int für Winkel gut gelöst? Würde lieber float nutzen, einfach nur um Kommazahlen entgegennehmen zu können.
Gruß
Mal von deiner Frage abgesehen, aber das ist kein C++ sondern normales C! :)