AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Falsche Ausgabe bei Durchschnittsberechnung
Thema durchsuchen
Ansicht
Themen-Optionen

Falsche Ausgabe bei Durchschnittsberechnung

Ein Thema von Lill Jens · begonnen am 24. Jul 2007 · letzter Beitrag vom 24. Jul 2007
Antwort Antwort
Lill Jens

Registriert seit: 12. Dez 2006
Ort: Nbg
121 Beiträge
 
Delphi 2007 Architect
 
#1

Falsche Ausgabe bei Durchschnittsberechnung

  Alt 24. Jul 2007, 09:59
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
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Falsche Ausgabe bei Durchschnittsberechnung

  Alt 24. Jul 2007, 10:05
Versuchs mal mit Begin und End
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Lill Jens

Registriert seit: 12. Dez 2006
Ort: Nbg
121 Beiträge
 
Delphi 2007 Architect
 
#3

Re: Falsche Ausgabe bei Durchschnittsberechnung

  Alt 24. Jul 2007, 10:11
Zitat von leddl:
Versuchs mal mit Begin und End
Optimal thx leddl
  Mit Zitat antworten Zitat
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#4

Re: Falsche Ausgabe bei Durchschnittsberechnung

  Alt 24. Jul 2007, 10:12
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.
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:59 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