Zitat Zitat von Downad
Code:
int iDiagonale= sqrt(2*iSeite*iSeite);
int iDach=(iSeite/2)/cos(iWinkel_Dach1/180*3.1415926535);
für iSeite = 100 geht das auch super idiagonale = 141
für iSeite = 150 ist iDiagonale 28672 --<<<<<<<WARUM?
für iSeite = 200 ist iDiagonale 120 --<<<<<<<<WARUM?
Dann rechnen wir mal:
für 100:
sqrt(2*100*100) = sqrt(20000) = 141
für 150:
sqrt(2*150*150) = sqrt(45000)
signed int geht aber nur bis +32767 -> overflow -> sqrt(-20535)...
Also kannst eigentlich froh sein, dass dir der Prozessor überhaupt etwas ausspuckt. Also sollte man in dem Fall (long) verwenden um sinnvolle Ergebnisse zu bekommen.

Zweitens kann man die Formel vereinfachen in iSeite*sqrt(2) = iSeite*1,414... (float verwenden nicht vergessen!)

Und drittens hab ich es vorher ausgerechnet und direkt in Programm geschrieben, damit sich der Asuro die Arbeit sparen kann.