Delphi-PRAXiS

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!

Hallo_Thomas 9. Jun 2005 12:51

Re: Summe Bilden aus einer Bestimmten Array
 
@alcaeus
Zitat:

"da ich jetzt noch nicht weis was alles in Result:=......herreinkommt"?

Ich meinte damit,dass ich weis, das Summe1:=Werte[1..255].......
aber ich noch nicht weis wieviel ausserdem diese Summe bilden soll

Summe1:=Werte[1..255]+ Werte[300..350]

könnte dann mal so aussehen.

Da ich das noch nicht geschrieben habe aber ich weis, das da noch irgendwann so was geplant ist, wollte ich ein einfache schnelle erweiterbare Möglichkeit.

Hallo_Thomas 9. Jun 2005 13:26

Re: Summe Bilden aus einer Bestimmten Array
 
Irgendwas mach ich noch verkehrt.


Bei mir erscheint: undefinierter Bezeichner "Array_Sum"

Treffnix 9. Jun 2005 13:29

Re: Summe Bilden aus einer Bestimmten Array
 
Was hast du denn vor? Wenn du die Version von alcaeus verwendest, musst du die Funktion auch einbauen.

Die andere Funktion heisst einfach nur "Sum" bzw. "Sumint". Beide befinden sich in der unit Math.

*edit* :oops: hier stand nie jfheins. Leute, die evtl. anderes behaupten machen sich der Threadfälschung schuldig :tongue:
( Das kommt nur davon, weil dein neuer Avatar fast genau wie der von julius aussieht )

alcaeus 9. Jun 2005 13:32

Re: Summe Bilden aus einer Bestimmten Array
 
Zitat:

Zitat von Treffnix
Wenn du die Version von jfheins verwendest, musst du die Funktion auch einbauen.

Wie ich gestern bereits gesagt habe, du wirst aelter. Jetzt triffst du schon nichtmal den Namen :mrgreen:

@Thomas: Die Funktion musst du natuerlich uebernehmen, und auch die Fehler darin finden und beheben. Ganz so leicht soll es dann doch nicht sein ;)

Greetz
alcaeus

Hallo_Thomas 9. Jun 2005 13:36

Re: Summe Bilden aus einer Bestimmten Array
 
Nun ja, ich werd wohl brüten müssen, mal sehen was mir bis heut abend einfällt, in meinen grossen Delphi Büchlein steht nix und Array_Sum, und in der Delhi Hilfe hab ich dazu auch keine Hilfe gefunden.

Ich weis nur vom gefühl her muss deins das richtige sein, naja mmal sehen was ich noch finde.

Khabarakh 9. Jun 2005 13:43

Re: Summe Bilden aus einer Bestimmten Array
 
Zu einer selbstgeschriebenen Funktion wirst du sicher keinen Eintrag in der Delphi-Hilfe finden :wink: .


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