Rechtwinkliges Dreieck in C , Berechnung?
Hallo, die Aufgabe lautet: Erstellen Sie ein Programm , mit dem Sie
- einen Dialog führen,der die Seitenlänge b und c eines rechtwinkligen Dreiecks abgragt.
- prüfe, ob mit dieser Angabe ein Dreieck überhaupt möglich ist und wenn nötig, eine Ausgabe mit ,,damit ist kein Dreieck definiert''
- ansonsten die Länge der Seite a ausgeben.
#include<stdio.h>
#include<math.h>
int main()
{
float b=0;
float c=0;
float a=0;
printf("Bitte geben Sie die Seitenlaengen von b ein:\n ");
scanf("%f",b);
printf("Bitte geben Sie die Seitenlaengen von c ein:\n ");
scanf("%f",c);
a=sqrt(b*b+c*c);
if(a> (b+c))
{
printf("damit ist kein Dreieck definiert\n");
}
else if(b> (b+c))
{
printf("damit ist kein Dreieck definiert\n");
}
else if(c>(a+b))
{
printf("damit ist kein Dreieck definiert\n");
}
else
{
printf("Die laenge von der Seite a ist:%f \n",a);
}
return(0);
}
irgendwie klappt das nicht.Kann mir wer zeigen, wie es richtig ist? Danke, wer helfen kann.
2 Antworten
Ich kann C leider nicht schreiben und wegen anderen Programmiersprachen aber grob lesen, aber es liegt an deinen Bedingungen.
1. In der Normbezeichnung liegt der rechte Winkel bei der Hypotenuse c, bei dir ist jedoch a die Hypotenuse, wegen
a=sqrt(b*b+c*c)
Dadurch gibt es danach Probleme. Es muss feststehen, was die Hypotenuse ist, sonst gibt es bei Eingabe der beiden Katheten stets ein passendes rechtwinkliges Dreieck, falls die Seitenlängen größer als Null sind.
Es müsste deshalb zuvor einige Fallunterscheidung geben.
1. Beide Längen müssen größer Null sein.
if (c <=0) or if (b <=0) => kein Dreieck definiert
2. c muss länger als b sein
if(c<=b)
printf("damit ist kein Dreieck definiert\n")
else
a=sqrt(c*c -b*b)
usw.
lauten.
Noch ein Hinweis zur Grammatik/Rechtschreibung:
Bitte geben Sie die Seitenlaengen von
Seitenlänge ohne n
Die laenge von der Seite a ist
Laenge groß, beträgt statt ist
C ist lange her, aber das hier scheint ein Tippfehler zu sein.
else if(b> (b+c))
Ansonsten ist Deine Fehlerbeschreibung etwas mau. :)