AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bierschaumzerfall

Ein Thema von jraxxo · begonnen am 28. Mär 2010 · letzter Beitrag vom 28. Mär 2010
Antwort Antwort
Seite 1 von 2  1 2      
jraxxo

Registriert seit: 7. Dez 2009
Ort: Groß Glienicke
9 Beiträge
 
#1

Bierschaumzerfall

  Alt 28. Mär 2010, 17:08
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
  Mit Zitat antworten Zitat
Notxor

Registriert seit: 28. Okt 2009
41 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Bierschaumzerfall

  Alt 28. Mär 2010, 17:16
Zitat von jraxxo:
Delphi-Quellcode:
  if (v / x = 10) then begin
...
Er sagt aber sobald ich aufs Knöpfchen drücke "gleitkommadivision durch null".
Es ist ja beim 5. Durchgang eine Division durch 0.
In deinem Bsp kann v/x nie 10 werden, da x=100 immer um 20 verringert wird.
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

Re: Bierschaumzerfall

  Alt 28. Mär 2010, 17:17
Denk mal drüber nach was du da machst. xD
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.140 Beiträge
 
Delphi 12 Athens
 
#4

Re: Bierschaumzerfall

  Alt 28. Mär 2010, 17:19
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:
v / x = 10
PS: Gleitkommaergebnisse auf exakte Gleichheit zu prüfen ist keine gute Idee.
> durch Rundungsfehler kann der Wert auch leicht abweichen und ergäbe dann keine Übereinstimmung.

PSS: Unbedingt FOR? Direkt berechnet ginge ja einfacher.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#5

Re: Bierschaumzerfall

  Alt 28. Mär 2010, 17:33
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;
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
IceBube

Registriert seit: 9. Jul 2008
177 Beiträge
 
#6

Re: Bierschaumzerfall

  Alt 28. Mär 2010, 18:35
hm

Vielleicht sollte man noch "sleep" durch Hier im Forum suchendelay ersetzen?



lg
  Mit Zitat antworten Zitat
jraxxo

Registriert seit: 7. Dez 2009
Ort: Groß Glienicke
9 Beiträge
 
#7

Re: Bierschaumzerfall

  Alt 28. Mär 2010, 21:28
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Bierschaumzerfall

  Alt 28. Mär 2010, 21:32
Es ist aber kein Problem die Routine entsprechend zu ändern.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von SimonRap
SimonRap

Registriert seit: 17. Okt 2009
Ort: Mahlow
147 Beiträge
 
Delphi 6 Personal
 
#9

Re: Bierschaumzerfall

  Alt 28. Mär 2010, 21:39
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]
Simon
  Mit Zitat antworten Zitat
jraxxo

Registriert seit: 7. Dez 2009
Ort: Groß Glienicke
9 Beiträge
 
#10

Re: Bierschaumzerfall

  Alt 28. Mär 2010, 21:45
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^^
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:21 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