![]() |
Delphi-Version: 7
Mittelwertberechnung
Hallo zusammen,
ich habe folgendes Problem: Ich habe ein Programm in dem ich einen Mittelwert aus Zeiten berechnen muss. Allerdings treten dabei folgende Probleme auf: Ich kann das Programm nicht compilieren, wenn ich nicht vorher eine Fließkommazahl runde. Wenn ich das aber mache, kommt bei der entscheidenden Division der Fehler, dass ich eine ungültige Fließkommaoperation ausführen möchte. Meine Frage ist, wo ist der Fehler und wie behebe ich ihn? Ich weiß nicht, welche Teile des Quellcodes ihr hier braucht, deshalb *LINK entfernt* die ganze Unit. Ich hoffe das ist kein Problem, habe erst vor kurzem mit Delphi angefangen. Grüße Matzi |
AW: Mittelwertberechnung
Hallo Matzi,
kopiere bitte den Teil des Quellcodes direkt hier in den Beitrag. |
AW: Mittelwertberechnung
Zitat:
Beim compilieren werden keine Berechnungen vom Quelltext durchgeführt! |
AW: Mittelwertberechnung
Okay, hier sind die hoffentlich richtigen Teile:
Variablen:
Delphi-Quellcode:
var
Form1: TForm1; Start: longint; Stop: longint; Treffer: int; Summe: real; Durchschnitt: longint; Variablen auf 0 setzen
Delphi-Quellcode:
Verändern der Variablen:
procedure TForm1.FormCreate(Sender: TObject);
begin randomize; Summe:=0; Treffer:=0; end;
Delphi-Quellcode:
Division und Ausgabe auf dem Label L_Durchschnitt
procedure TForm1.Sh_SchwerMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin Form1.Caption:=inttostr(strtoint(Form1.Caption)+1); Stop:=gettickcount(); Lb_Zeit.Items.Add(inttostr(Stop-Start)); Sh_Schwer.Visible:=false; Treffer:=Treffer+1; Summe:=Summe+(Stop-Start); end;
Delphi-Quellcode:
Ich denke das ist alles.
Durchschnitt:=Summe/Treffer;
L_Mittelwert.Caption:=floattostr(Durchschnitt); Zum compiler: Ich bekomme die Fehlermeldung: [Fehler] SpielUnit1.pas(168): Inkompatible Typen: 'Integer' und 'Extended' Gruß Matzi |
AW: Mittelwertberechnung
"Durchschnitt" ist vom Typ LongInt (ein Ganzzahltyp - Integer), das Ergebnis einer Division mit "/" liefert in Delphi jedoch immer einen Extended (bzw. Double), also einen Fließkommatypen - egal ob die Division ohne Rest ginge oder nicht sogar.
|
AW: Mittelwertberechnung
Ist dir aufgefallen, das Durchschnitt eine Ganzzahl ist? Eine Gleitkommazahl wäre wohl besser.
Außerdem: Benutze die Delphi-Tags!
Code:
ergibt:
[DELPHI]
// ein Beispiel procedure beispiel(i: integer); [/DELPHI]
Delphi-Quellcode:
Das solltest du auch bei deinem letzten Beitrag machen. Danke, mkinzler :mrgreen:
// ein Beispiel
procedure beispiel(i: integer); |
AW: Mittelwertberechnung
Okay, das habe ich geändert, danke.
Allerdings steht als dieser Mittelwert jetzt immer 0 und nicht das Ergebnis der Division. Ist da noch ein Fehler? Gruß Matzi Habe den Fehler gefunden und behoben. Trotzdem danke für die schnelle Hilfe :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:21 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