Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Falsche Ausgabe bei Durchschnittsberechnung (https://www.delphipraxis.net/96422-falsche-ausgabe-bei-durchschnittsberechnung.html)

Lill Jens 24. Jul 2007 09:59


Falsche Ausgabe bei Durchschnittsberechnung
 
Hey Ihr!

Mein Problem ist das, obwohl ich (meiner meinung nach) den code richtig geschrieben habe, eine falsche ausgabe kommt dazu noch als Fehlermeldung!

Hier erst mal mein Code:

Delphi-Quellcode:
procedure TForm1.Button18Click(Sender: TObject);
var
k: Integer;

begin

k:=0;

if (Label56.Caption>=FloatToStr(1))

Then begin

k:= k +1

end;

if (Label57.Caption>=FloatToStr(1))

Then begin

k:= k +1
end;

if (Label58.Caption>=FloatToStr(1))

Then begin

k:= k +1

end;

if (Label59.Caption>=FloatToStr(1))

Then begin

k:= k +1

end;
if (Label60.Caption>=FloatToStr(1))

Then begin

k:= k +1

end;

if (Label61.Caption>=FloatToStr(1))

Then begin

k:= k +1

end;

if (Label62.Caption>=FloatToStr(1))

Then begin

k:= k +1

end;

if (Label63.Caption>=FloatToStr(1))
Then begin

k:= k +1
end;


If (k = 0)

Then

Label72.Visible := false;
Label72.Caption:= FloatToStr(1);


If (k >=1)

Then

Label72.Visible := true;

Label72.Caption:= FloatToStr(StrToFloat(Label56.Caption) + StrToFloat (Label57.Caption) + StrToFloat (Label58.Caption) + StrToFloat (Label59.Caption) + StrToFloat (Label60.Caption) + StrToFloat (Label61.Caption) + StrToFloat (Label62.Caption) + StrToFloat (Label63.Caption));
Label72.Caption:= FloatToStr(StrToFloat (Label72.Caption) / k);


wenn 'k' am schluss 0 ist (und davon geh ich bei dem versuch aus) soll ausgegeben werden Label72.Caption:= FloatToStr(1).
aller dings springt mein prog in die letzte zeile, obwohl 'k' wirklich null ist. ich blick nicht wieso?!


Das ganze soll einer Notendurchschnittsberechnung dienen!


Thx 4 Cmts


Lill Jens :coder2:

leddl 24. Jul 2007 10:05

Re: Falsche Ausgabe bei Durchschnittsberechnung
 
Versuchs mal mit Begin und End :zwinker:

Lill Jens 24. Jul 2007 10:11

Re: Falsche Ausgabe bei Durchschnittsberechnung
 
Zitat:

Zitat von leddl
Versuchs mal mit Begin und End :zwinker:

Optimal thx leddl :thumb:

Sidorion 24. Jul 2007 10:12

Re: Falsche Ausgabe bei Durchschnittsberechnung
 
Als erstes solltest Du Dir mal eine ordentliche Formatierung einfallen lassen.
Als zewites sind die beiden einzigen ifs, bei denen ein Begin..end Block erforderlich ist ohne begin..end block.
Als drittes solltest Du nicht eine 1 nach string konvertieren und mit dem Text vergleichen, sondern den Text in ein Float und mit 1 vergleichen (bei Dir wird nämlich ein String-Vergleich durchgeführt und das willste sicher nicht)
Als viertes würde ich empfehlen, eben diesen Vergleich in eine weitere Funktion auszulagern, die ein Edit und eine Vergleichszahl übernimmt und einen boolean zurückgibt.
Als fünftes würde ich das Gefummel mit den Texten anders machen:
Delphi-Quellcode:
Function AddToAverage(_oEdit: TEdit, var _iCount: Integer, var _fAverage: Double): Boolean;
Var
  fValue: Double;
begin
  try
    fValue:=StrToFloat(_oEdit.Text);
  except
    fValue:=0;
  end;
  if (fValue>1)
  then begin
    inc(_iCount);
    _fAverage:=_fAverage+fValue;
    Result:=True
  end else Result:=False;
end;
Jetzt kannst Du die Funktion mit jedem Edit rufen und wenn der Wertt >1 dann wird die Anzahl um eins und der Gesamtwert um den Wert erhöht. Wenn Du mit allen durch bist, dann kannst Du mit Label72.Caption:=FloatToStr(fAverage/iCount)) bequem das Ergebnis ausgeben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:54 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