Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Summe Bilden aus einer Bestimmten Array (https://www.delphipraxis.net/47293-summe-bilden-aus-einer-bestimmten-array.html)

Hallo_Thomas 8. Jun 2005 23:46


Summe Bilden aus einer Bestimmten Array
 
Und Zwar folgendes


Delphi-Quellcode:
x:=y+z+h+D[1..255]


Wie schreibe ich das richtig?

Damit auch die D[1..255]addiert werden?

alcaeus 8. Jun 2005 23:56

Re: Summe Bilden aus einer Bestimmten Array
 
Hallo Thomas,

lauf mit einer Schleife durch das Array und zaehle alle Felder zusammen:

Delphi-Quellcode:
Sum := 0;
for i := Low(ar) to High(ar) do
  Sum := Sum+ar[i];
Greetz
alcaeus

Hallo_Thomas 9. Jun 2005 00:26

Re: Summe Bilden aus einer Bestimmten Array
 
Ich hatte auch schon an so was ähnliches gedacht mein Hauptproblem ist dabei folgendes.

Summe1:=Werte[1..255] +....
Summe2:=Werte[10..100]+.....


Es werden bei mir immer erschiedene Reihenfolgen von den Summanden benötigt.Gibt es da ne Möglichkeit die wie Sum(Werte[10..100]) alles, Irgendwie sowas?

alcaeus 9. Jun 2005 00:56

Re: Summe Bilden aus einer Bestimmten Array
 
Dann schreibs dir doch einfach, z.B. so:

Delphi-Quellcode:
functoin Array_Sum(cost aArray: array of Integer; aStart, aEnd: Integer): Intger;
begin
  Result := 0
  for i := aStart to aEnd do
    Result := Result + aArray[i];
end;
Greetz
alcaeus

PS: Die ganzen (5 insg.) Fehler im Quelltext sind dazu da, dass du dich auch damit befasst :zwinker:

[edit]Kleine Hinweise vom [user=Robert_G]"G"[/user] eingearbeitet[/edit]

runger 9. Jun 2005 05:37

Re: Summe Bilden aus einer Bestimmten Array
 
Hallo,

es gibt eine Funktion in der Unit math, die das macht.

function Sum(const Data: array of Double): Extended;

Als kleines Beispiel:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var a:array[1..5] of double;b:double;s:string;
begin
   a[1]:=3;a[2]:=-5;a[3]:=-13;a[4]:=45;a[5]:=3;
   b:=Sum(a);
   str(b,s);
   label2.caption:=s;
end;
Rainer

Hallo_Thomas 9. Jun 2005 10:08

Re: Summe Bilden aus einer Bestimmten Array
 
@ alcaeus Das sind ja beides Schleifen, da ich jetzt noch nicht weis was alles in Result:=...... herreinkommt und ich später da wohl nur noch schwer durchsehe, wollte ic es eher zusammenfassen, als es in ne schleife zu bringen.

So ähnlich wie bei Exel Summe(A1:A255)

Hallo_Thomas 9. Jun 2005 10:18

Re: Summe Bilden aus einer Bestimmten Array
 
@ Runger


Das kommt dem dem ganz nahe was ich mir Vorstelle.



Hab hier aber wieder ein kleines Problem.
(Ich habs noch nicht probiert aber wenn ich statt Double ,Integer nehme denke ich wirds keine Probleme geben.)


b:=f+e+w+Sum(a1)+Sum(a2)
c:=d+s+f+g+Sum(a3)
D:=




a1:= array 1..255
a2:= array 300..355
a3:= array 1..50

alcaeus 9. Jun 2005 10:23

Re: Summe Bilden aus einer Bestimmten Array
 
Hallo Thomas,

Zitat:

Zitat von Hallo_Thomas
@ alcaeus Das sind ja beides Schleifen, da ich jetzt noch nicht weis was alles in Result:=...... herreinkommt und ich später da wohl nur noch schwer durchsehe, wollte ic es eher zusammenfassen, als es in ne schleife zu bringen.

So ähnlich wie bei Exel Summe(A1:A255)

naja, anstatt Summe(A1:A255) zu schreiben wuerdest du bei diesem Beispiel
Delphi-Quellcode:
Summe1:=Werte[1..255] +....
Summe2:=Werte[10..100]+.....
einfach
Delphi-Quellcode:
Summe1 := Array_Sum(Werte, 1, 255);
Summe2 := Array_Sum(Werte, 10, 100);
schreiben. Die Summe eines Arrays kannst du nur machen, indem du durch das Array gehst, und jedes Element zur Summe hinzuzaehlst. Und damit du die Schleife nicht jedesmal schreiben musst, wird es eben in eine Funktion gepackt. So einfach ist das.
Wichtig: "Zusammenfassen" kannst du es nicht. Du kannst nur Teile, die oefters gebraucht werden, auslagern, wie ich es gemacht habe. Und was meinst du mit "da ich jetzt noch nicht weis was alles in Result:=......herreinkommt"? Du musst irgendwie wissen was reingeschrieben wird, sonst koenntest du auch nicht die Arraygrenzen so angeben wie du es im ersten Beitrag gemacht hast ;)

Noch was: die Funktion die ich geschrieben habe unterscheidet sich nur geringfuegig (wenn wir mal die ASM-Optimierung weglassen) von der Sum-Funktion. Bei meiner Funktion hast du noch die Option, die Arraygrenzen anzugeben.

Greetz
alcaeus

runger 9. Jun 2005 11:08

Re: Summe Bilden aus einer Bestimmten Array
 
Hallo,

ersetze sum durch sumint, dann gehts auch mit Integer.
Wenn du mit variablen Grenzen arbeiten willst ist die Lösung von Alcaeus
die erste Wahl.

Rainer

Hallo_Thomas 9. Jun 2005 12:41

Re: Summe Bilden aus einer Bestimmten Array
 
Perfekt, ich habs noch nicht probiert, aber das sieht glaub genau so aus wie ichs mir vorgestellt hab. Danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:28 Uhr.
Seite 1 von 2  1 2      

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