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.