Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Pyramidenstümpfe berechnen (https://www.delphipraxis.net/112756-pyramidenstuempfe-berechnen.html)

thknub 26. Apr 2008 14:01


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:
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.

dominikkv 26. Apr 2008 14:06

Re: Pyramidenstümpfe berechnen
 
Hallo und Herzlich willkommen bei der DP :party:

Versuche mal statt Real den Datentyp Double oder Extended zu nehmen.

thknub 26. Apr 2008 14:37

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.

Matze 26. Apr 2008 14:43

Re: Pyramidenstümpfe berechnen
 
Hallo,

zukünftig gilt: neue Frage - neues Thema, damit man über die Suche auch leichter auf Problemlösungen stößt.

Dateien und Anwendungen aus Delphi heraus starten

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 15:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz