Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Summenzeichen in Delphi? (https://www.delphipraxis.net/12224-summenzeichen-delphi.html)

Chris1986 23. Nov 2003 12:52


Summenzeichen in Delphi?
 
Hi,
es gibt ja in Delphi die Unit Math. Gibts da auch sowas wie das Summenzeichen? Ich bräuchte nämlich das Ergebnis der Summe:

n-1
Σ (n-k)
k=1

Natürlich könnte ich das auch mit einer Schleife machen, aber das finde ich nicht sehr elegant. Oder weiß jemand zufällig eine explizite Darstellung für die Summe? :lol: Ich überleg schon 3Stunden, aber mir fällt absolut keine ein. :wall:

Ich brauche das ganze, weil ich die Restzeit berechnen will für etwas, das so ähnlich aussieht:

Delphi-Quellcode:
begin
  for i:= 1 to 1000 do
    for j:=i to 1000 do
      {irgendwas}
end;
Die 2te Schleife wird also immer kürzer. Und um das korrekt zu berechnen muss ich wissen, wieviel Schleifen denn noch zu berechnen sind. Und das mit einer weiteren for-Schleife zu machen ist natürlich schlecht, weil die Schleife bis zu 50000 mal durchlaufen wird.

MfG
Christian

Chris1986 23. Nov 2003 14:16

Re: Summenzeichen in Delphi?
 
Die explizite Darstellung habe ich gefunden: (n+n^2)/2 :lol: aber die Restzeit lässt sich trozdem nicht genau berechnen. Vielleicht kann mir da jemand weiterhelfen:

Delphi-Quellcode:
function TForm1.Restzeit (Startzeit,aktuelleZeit: TDateTime; aktuellesFeld,max: Longint): TDateTime;
var Differenz: TDateTime; //Die bis jetzt benötigte Zeit
    n: integer; //alle Felder. Die var wird zwar übergeben ist aber so kürzer
    f: integer; //aktuelles Feld. S.o
    Ergebnis: TDateTime; //macht die Prozedur nur übersichtlicher
begin
  n := max; //alle Felder;
  f := aktuellesFeld;
  Differenz := aktuelleZeit-Startzeit;
  Ergebnis := Differenz/((f+sqr(f))/2) //Die Zeit die man für eine Schleife braucht wird berechnet
  Eergebnis := Ergebnis* (((n+sqr(n))/2)-((f+sqr(f))/2))
  {Die noch zu berechnenden Schleifen werden bestimmt und anschließend mit der Zeit mulipliziert}
  Result := Ergebnis;
end;
Theoretisch müsste das doch so funktioneiren, oder? Praktisch tuts das aber nicht Die Zeit angaben sind absolut ungenau :wall: Liegt das vielleicht daran, das mit TDateTime Millisekunden nicht als Kommazahl dargestellt werden können? Denn dann dürfte hier der Fehler liegen: Differenz/((f+sqr(f))/2)

Hat jemand ne Idee?

MfG
Christian

Luckie 23. Nov 2003 14:30

Re: Summenzeichen in Delphi?
 
wie wäre es mit einem Blick in die Hilfe?
Zitat:

Zitat von TDateTime
Delphi-Quellcode:
type TDateTime = type Double;
Most VCL objects represent date and time values using the TDateTime type. The integral part of a TDateTime value is the number of days that have passed since 12/30/1899. The fractional part of a TDateTime value is fraction of a 24 hour day that has elapsed.


Chris1986 23. Nov 2003 14:34

Re: Summenzeichen in Delphi?
 
hm. Und wie berechne ich das dann?

MfG
Christian


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