![]() |
Bierschaumzerfall
Hallo nochmal,
und noch ein Problem: ich soll auch Bierschaumzerfall mit einer For-Schleife coden. Dieser läuft NICHT exponentiell ab, d.h. er verliert alle 60s 12% seines ANFANGSVOLUMENS. also hab ich (ich brauche sekundengenaue berechnung):
Delphi-Quellcode:
;
procedure TForm1.Button1Click(Sender: TObject);
var x,v: extended; i,sec: longint; begin v:=100; x:=100; for i := 0 to 600 do begin x:=x-(0.2*v); sec:=i; if (v / x = 10) then begin Edit1.Text:=(inttostr(sec)); exit; end; end; end Er sagt aber sobald ich aufs Knöpfchen drücke "gleitkommadivision durch null". Wie immer bedanke ich mich an dieser Stelle für Antworten im voraus. Joscha |
Re: Bierschaumzerfall
Zitat:
In deinem Bsp kann v/x nie 10 werden, da x=100 immer um 20 verringert wird. |
Re: Bierschaumzerfall
Denk mal drüber nach was du da machst. xD
|
Re: Bierschaumzerfall
nach 5 Schleifendurchgängen sollte X auf 0 stehen und "y / x", also "y / 0" verursacht diesen Fehler.
"durch 0" kann nicht berechnet werden. Zitat:
> durch Rundungsfehler kann der Wert auch leicht abweichen und ergäbe dann keine Übereinstimmung. PSS: Unbedingt FOR? Direkt berechnet ginge ja einfacher. |
Re: Bierschaumzerfall
Ich habe mal ein wenig gespielt:
Delphi-Quellcode:
...
private Ende: Boolean; ... procedure TForm2.Button1Click(Sender: TObject); var BierSchaum: double; i: Integer; begin Ende := False; BierSchaum := 100; for i := 0 to 300 do begin BierSchaum := BierSchaum - 0.2; Edit1.Text := Format('Sekunden: %2d Stand: %2.2f', [i, BierSchaum]); Application.ProcessMessages; if Ende then begin break; end; sleep(1000); end; end; procedure TForm2.Button2Click(Sender: TObject); begin Ende := True; end; |
Re: Bierschaumzerfall
|
Re: Bierschaumzerfall
ui. so viele beiträge.
also freak4fun... ich bin mir nich sicher ob du verstanden hast was ich brauch...ich brauch eine funktion die berechnet nach wie viel sek nur noch 10% da sind...das macht deine -wenn auch sehr hübsche - procedure leider nich :( |
Re: Bierschaumzerfall
Es ist aber kein Problem die Routine entsprechend zu ändern. ;)
|
Re: Bierschaumzerfall
bin jetzt nich der mathe experte, aber meiner Meinung nach brauch man dafür doch ken ganzes Programm...
er verliert alle 60s 12% von 100... also jede sekunde: (100/100*12)/60 ... zwar is x/x*ir-was immer ir-was, aber der richtigkeit halber^^ willst wissen, wann das bei 10 is... also (100-10)*(1/0,2)=... Wenn ich mich nich irre, is das schon die Anzahl der Sekunden... [EDIT]kannst das ja noch in ne prozedur packen, die das rechnet^^[/EDIT] |
Re: Bierschaumzerfall
simonrap das problem ist ja dass ich genau das tun will aber atm nich so richtig weiterkomme weil ich schon ewig nich mehr mit delphi programmiert hab....
ich will einfach nur fertig werden und ins bett^^ |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:36 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-2025 by Thomas Breitkreuz