Einzelnen Beitrag anzeigen

thknub

Registriert seit: 25. Apr 2008
12 Beiträge
 
Turbo Delphi für Win32
 
#1

Pyramidenstümpfe berechnen

  Alt 26. Apr 2008, 14:01
Hi,

ich bin noch ziemlich neu hier. Ich habe mit Dlephi angefangen, weil wir es gerade in Info haben und es doch ganz interessant klang :). Aus langerweile hab ich mich mal hingesetzt und einen kleinen Rechner zur Berechnung von Pyramidenstümpfen erstellt. Wenn ich mit einfachen Zahlen rechen, stimmt das Ergebnis nahezu 100%. Als ich dann aber einen größeren Körper berechnen wollte, wurde es ungenau: Das vom Programm erechnete Ergebnis weicht um 3 von dem mit dem Taschenrechner errechneten ab, wobei das aus dem Taschenrechenr definitiv richtig ist und der Funktionsaufbau der gleiche.

Delphi-Quellcode:
procedure TForm2.Button2Click(Sender: TObject);
var a, b, c, d, e, f, g, h, i, j : REAL;
begin
a := StrToFloat(edit1.text);
b := StrToFloat(edit2.text);
c := StrToFloat(edit3.text);
d := StrToFloat(edit4.text);
i := StrToFloat(edit9.text);
e := a*c;
f := b*d;
g := 2*((a+b)/2*sqrt((sqr(a-b)/2)+sqr(i)))+2*((c+d)/2*sqrt(sqr((c-d)/2)+sqr(i)));
h := e+f+2*((a+b)/2*sqrt((sqr(a-b)/2)+sqr(i)))+2*((c+d)/2*sqrt(sqr((c-d)/2)+sqr(i)));
j := 1/3*i*(e+sqrt(e*f)+f);
  edit5.text := FloatToStr(e);
  edit6.text := FloatToStr(f);
  edit7.text := FloatToStr(g);
  edit8.text := FloatToStr(h);
  edit10.text := FloatToStr(j);

  end;

end.
Ich weiß, das Prog ist relativ einfach, aber für mich reicht es aus.

Genaugenommen geht es um den Oberflächeninhalt (Variable h), Variable i ist die Höhe. Die Formel sollte sein:

(a*c)+(b*d)+(2*((a+b)/2*Wurzel(((a-b)/2)²+i²))+(2*((c+d)/2*Wurzel(((c-d)/2)²+i²))

http://img403.imageshack.us/img403/7...midenstal4.jpg


Mathematisch gesehen sollte alles richtig sein, aber das Ergebnis weicht mir doch etwas zu sehr ab.
  Mit Zitat antworten Zitat