Rechtwinkliges dreieck

hallo

Ich komme mit der folgendem Aufgabestellung nicht klar:

Nach Eingabe der drei Seitenlängen a, b, und c eines Dreiecks soll ein programm feststellen, ob es sich um ein rechtwinkliges Dreieck handelr oder nicht.

So hab ich das versucht:

#include
#include
#include
#include

using namespace std;

in main ()
{
float a, b, c, quadrat;
cout > a;
cout > b;
cout > c;
quadrat = pow(a,2)+pow(b,2);

if (c’=='pow(quadrat,0.5))
cout

Hallo,

Was für einen Fehler beobachtest Du denn? Einen Compilerfehler oder einen logischen Fehler, weil die Ergebnisse nicht stimmen?

Abgesehen davon, dass die Methode an sich (aufgrund von Rundungsfehlern z.B.) nicht besonders elegant ist, was sollen denn die „single quotes“ in dem if? Du scheinst überhaupt mit so einer art „Hochkommabüchse“ über den Code gestreut zu haben. Und warum ziehst Du die Wurzel aus dem Ergebnis anstatt c einfach auch zu quadrieren? Ach ja, wenn es eine Hausaufgabe ist, korrigiere am besten auch die offensichtlichen Schreibfehler :smile:

Gruß

Fritze

Nach Eingabe der drei Seitenlängen a, b, und c eines Dreiecks
soll ein programm feststellen, ob es sich um ein
rechtwinkliges Dreieck handelr oder nicht.

So hab ich das versucht:

#include
#include
#include
#include

Verwende in C++ besser die cmath und cstdio-Header, die sorgen für vernünftige Namespaces, was die „alten“ C-Header nicht tun.

float a, b, c, quadrat;
quadrat = pow(a,2)+pow(b,2);

Anmerkung: a*a+b*b ist wahrscheinlich schneller. Das fällt hier nicht ins Gewicht und ändert wohl auch nichts am Ergebnis, aber man sollte es wissen.

if (c’=='pow(quadrat,0.5))

Wofür sind die Anführungszeichen um ==?

Dann: die korrekte Funktion für eine Quadratwurzel ist sqrt(). Das ist gähnend langsam, ein geeigneterer Ausdruck wäre hier vielleicht:

if( c*c == quadrat ) …

Außerdem liegt hier wahrscheinlich auch das Problem. Durch die Ungenauigkeiten, die bisher durch die Rechenoperationen auf a, b und quadrat ausgeführt worden sind, wirst du wohl kein gutes Ergebnis mehr bekommen, sprich das Endergebnis von sqrt( a*a + b*b ) wird nur in den seltensten Fällen genau gleich dem eingegebenen c sein. Das einzige, was du tun kannst, ist mit einer gewissen Abweichung zu arbeiten:

if( abs(c*c-quadrat)

Hallo,
alle bisherigen Algorithmen erkennen ein rechtwinkliges Dreieck nur dann, wenn die Seiten a,b,c in der „richtigen“ Reihenfolge eingegeben werden. Ich würde daher die Formeln für die Berechnung eines Winkels aus den 3 Seiten verwenden (findet sich in jedem Lehrbuch zur Trigonometrie) und einfach nachsehen, ob einer von den 3 Winkeln ziemlich genau 90° ist.

Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]