![]() |
Pyramidenstümpfe berechnen
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:
Ich weiß, das Prog ist relativ einfach, aber für mich reicht es aus.
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. 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²)) ![]() Mathematisch gesehen sollte alles richtig sein, aber das Ergebnis weicht mir doch etwas zu sehr ab. |
Re: Pyramidenstümpfe berechnen
Hallo und Herzlich willkommen bei der DP :party:
Versuche mal statt Real den Datentyp Double oder Extended zu nehmen. |
Re: Pyramidenstümpfe berechnen
Hat sich erledigt. Ich hatte eine Klammer falsch gesetzt. :wall:
Aber mal eine andere Frage: Ich möchte mir eine Programmsammlung aus kleinen Mathe-Progs wie diesem erstellen. Wie kann ich dieses Programm vom Oberprogramm öffnen lassen. Ich hab es mit ShellExecute probiert, bin aber augenscheinlich zu blöd dazu... :gruebel: Könnte mir mal jemand einen BSP.-Quellcode schreiben und mir dann genau sagen, was ich ersetzen muss? PS: Extended und Double hatte ich auch schon probiert, die brachten aber logischerweise kein anderes Ergebnis. |
Re: Pyramidenstümpfe berechnen
Hallo,
zukünftig gilt: neue Frage - neues Thema, damit man über die Suche auch leichter auf Problemlösungen stößt. ![]() ParamStr(0) (oder Application.ExeName) ist übrigens der Pfad zu deiner Exe und mit ExtractFilePath kannst du daraus dein Programmverzeichnis ermitteln, falls sich diese Programme in dem Verzeichnis befinden sollten. Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz