Einzelnen Beitrag anzeigen

Ryu

Registriert seit: 15. Sep 2014
2 Beiträge
 
#4

AW: Verzweifelt: Algorithmus zur Ermittlung aufeinander folgender Zahlen Array

  Alt 15. Sep 2014, 20:22
Hallo Günther,

ich habe den Typen nicht TValue genannt in meinem Delphi Code, wie gesagt ist dies nur reiner Pseudocode

Zu der Frage wie ich zu den Zahlen komme:

Die Idee ist, dass ich solange die nächste Zahl addiere bis eine Null kommt. Anschließend setze ich die aus dem vorherigem Schritt resultierende Summe auf die Zahlen die ich eben durchgegangen bin... Schwierig zu erklären, schwierig umzusetzen. Deswegen nochmal etwas anschaulicher:

Delphi-Quellcode:
Values.val = [0, 5, 4, 9, 0, 0, 1, 0, 0, 3, 4, 0]

Values.sum = [0, 18, 18, 18, 0, 0, 1, 0, 0, 7, 7, 0]
Die erste 18 soll sich ergeben aus 5 + 4 + 9.
Die zweite 18 auch aus 5 + 4 + 9, denn es folgt vor der 4 und nach der 4 keine 0.
Die dritte 18 ebenfalls aus 5 + 4 + 9, da zwar danach eine 0 folgt aber vorher alle Zahlen <> 0 sind.

Man könnte fast sagen, ich möchte die Summe der Zahlen haben, welche "innerhalb" von 0en gekapselt ist. Die berechnete Summe soll, auf den in den "0en gekapselten" Zahlen gesetzt werden.

Ich hoffe ich habe es einigermaßen verständlich erklärt, ansonsten bitte nochmal nachhaken. Es fällt mir manchmal schwer solche Sachverhalte einfach und knapp zu erklären

Und jetzt lese ich mir mal die Antwort durch von BUG

Edit:
Danke für deinen Vorschlag Robert, ich bin den mal auf ein Blatt Papier durchgegangen und für's erste Bündel klappts aufjedenfall. Ich werde mal versuchen den zu implementieren. Weitere Vorschläge/Tipps sind gerne willkommen, nichtsdestotrotz danke schonmal.Allerdings habe ich aus der zweiten While-Schleife folgendes gemacht:

Delphi-Quellcode:
 ... Solange Values[i].value <> 0:
  s += Values[i].value
  i += 1
Edit2:
Wow Robert, dein Code funktioniert! Zumindest fürs erste Bündel läuft das ganze schonmal!!! Ziemlich peinlich wenn man seit 2 Tagen nicht auf die Lösung kommt und im Forum jemand das Problem nach 5 Minuten gelöst hat..........
Mal schauen ob ich es aufs ganze Array übertragen kann welches übrigens eine Länge von 14 hat.

Edit3:

holy fuck es funktioniert!!!!!!!!!!!! woohoo ! 1000-faches dankeschön, ich hätte echt ne wand eingerissen, wenn ich das Problem nicht heute noch gelöst hätte. !!!!

Geändert von Ryu (15. Sep 2014 um 20:54 Uhr)
  Mit Zitat antworten Zitat