Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1376to1380
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Array anpassen

Array anpassen
28.08.2014 10:41:45
Alifa
Hallo,
das Array p enthält 42 Zahlen. Daraus werden jeweils 6 Zahlen ausgewählt, welche die Summe 574 bilden. Kann p nach jeder "Ziehung" so verändert werden, dass die 6 zuvor entnommenen Zahlen nicht mehr darin vorkommen, p also 36(30,24,18...6) Zahlen enthält. Daraus werden weiter 6 entnommen, deren Summe 574 ist. Ich stelle mir das so vor:
For Each a1 In p.....For Each a6 in p....If a1+a2+...a6=574 Then
Danke im Voraus, Alifa

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array anpassen
28.08.2014 11:03:09
yummi
Hallo Alifa,
Du kannst das Array zwar mit Redim verändern, aber du müsstest dir auch die Inicex merken welche Du löschen willst. Vorschlag: nimm ein 2 dimensionales array
0,0 ... 0,42 deine Zahlen
1,0 ... 1,42 Bool Wert
Initialisiere alle bool Werte auf true
Jedesmal wenn Du eine Zahl erfolgreich gezogen hast setzt Du den bool wert auf false. Dann kannst Du dafür sorgen, dass nur Zahlen mit true gezogen werden.
Vlt ist das ja ein Ansatz
gruß
yummi

AW: Array anpassen
28.08.2014 12:39:40
Rudi
Hallo,
benutze ein Collection- oder Dictionary-Objekt statt eines Arrays.
Daraus kannst du die Items einfach per Remove entfernen.
Gruß
Rudi

Anzeige
AW: Array anpassen
28.08.2014 14:36:28
Alifa
Leider habe ich kaum Kenntnisse von Collction-und Dictionary-Object. Wie würde das aussehen mit den Zahlen:7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197.
Gruß, Alifa

AW: Array anpassen
29.08.2014 12:12:39
Rudi
Hallo,
nicht schön aber wirksam:
Sub alifa()
Dim arr, arrErg
Dim objArr As Object, objErg As Object
Dim a As Integer, b As Integer, c As Integer, _
d As Integer, e As Integer, f As Integer, _
i As Integer
arr = Array(7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, _
71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, _
149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197)
Set objArr = CreateObject("scripting.dictionary")
Set objErg = CreateObject("scripting.dictionary")
For i = LBound(arr) To UBound(arr)
objArr(arr(i)) = 0
Next
start:
If objArr.Count > 5 Then
arr = objArr.keys
For a = 0 To UBound(arr)
For b = a + 1 To UBound(arr)
For c = b + 1 To UBound(arr)
For d = c + 1 To UBound(arr)
For e = d + 1 To UBound(arr)
For f = e + 1 To UBound(arr)
If (arr(a) + arr(b) + arr(c) + arr(d) + arr(e) + arr(f)) = 564 Then
objErg(objErg.Count + 1) = Array(arr(a), arr(b), arr(c), _
arr(d), arr(e), arr(f))
objArr.Remove arr(a)
objArr.Remove arr(b)
objArr.Remove arr(c)
objArr.Remove arr(d)
objArr.Remove arr(e)
objArr.Remove arr(f)
GoTo start
End If
Next f
Next e
Next d
Next c
Next b
Next a
End If
arrErg = objErg.items
arrErg = Application.Transpose(arrErg)
With Sheets(1)
.Cells(1, 1).Resize(UBound(arrErg), UBound(arrErg, 2)) = arrErg
.Cells(8, 1).Resize(, UBound(arrErg, 2)).FormulaR1C1 = "=sum(r1C:r6c)"
End With
End Sub

Gruß
Rudi

Anzeige
AW: Array anpassen
29.08.2014 18:07:36
Alifa
Hallo Rudi,
Danke für den Code. Es ist zu vermuten, dass es viele solcher "Gruppen" gibt. Das soll ein magisches
Quadrat 7x7 geben, mit 7 Nullen. Summe:574. Die Nullen: c1,d2,e3,g4,a5,f6,b7(Schachbrett Notation).
Bitte ändere die Ausgabe in diesem Sinne.(Die Zahlen nebeneinander und 7 Mal 0). Ob es möglich ist, alle Gruppen zu finden? Hoffentlich verlange ich nicht zu viel.
Gruß, Erhard

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige