Autor
|
Thema: Zahlenkombination von 1 bis 4 erstellen (4751 mal gelesen)
|
CADdoctor Mitglied Technischer Zeichner (Versorgungstechnik)
Beiträge: 313 Registriert: 12.05.2007 Software: AutoCAD MEP 2013 Excellink 2013 Windows 7 x64 Pro SP 1 Office 2010 SP 1 Mozilla Firefox 13.0.1 Mozilla Thunderbird 13.0.1<P>Hardware: ASUS P6T WS Professional Intel Core i7-920, 4x 2.67GHz PNY Quadro FX 1800 Kingston HyperX DIMM XMP Kit 6GB Kingston HyperX SSD 120GB, SATA 6Gb/s
|
erstellt am: 21. Sep. 2010 08:46 <-- editieren / zitieren --> Unities abgeben:
Hallo! Ich will alle Kombinationen von 1 bis 4 auflisten lassen. 4! ergibt 24 Lösungen. Ich bekomme aber mit meinem Code 204 Lösungen. Was mache Ich falsch? Option Explicit Sub x() Dim p%, a%, b%, c%, d%, e%, f%, i& For p = 4 To 10 For a = 1 To 4 For b = 1 To 4 For c = 1 To 4 For d = 1 To 4 For e = 1 To 4 For f = 1 To 4 If a + b + c + d + e + f = p Then i = i + 1 Cells(i, 1).Resize(, 4) = Array(a, b, c, d, e, f) End If Next Next Next Next Next Next Next End Sub ------------------ Mit freundlichen Grüßen CADdoctor [Diese Nachricht wurde von CADdoctor am 21. Sep. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Oberli Mike Ehrenmitglied V.I.P. h.c. Dipl. Maschinen Ing.
Beiträge: 3728 Registriert: 29.09.2004 Excel 2010 128GB SSD Windows 7
|
erstellt am: 21. Sep. 2010 08:55 <-- editieren / zitieren --> Unities abgeben: Nur für CADdoctor
Bei 4 Stellen gibt es 256 Lösungen For a = 1 To 4 For b = 1 To 4 For c = 1 To 4 For d = 1 To 4 Range("A" & (a - 1) * 4 * 4 * 4 + (b - 1) * 4 * 4 + (c - 1) * 4 + d) = a & " " & b & " " & c & " " & d Next d Next c Next b Next a Gruss Mike ------------------ The Power Of Dreams [Diese Nachricht wurde von Oberli Mike am 21. Sep. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Ehrenmitglied V.I.P. h.c. IT Admin (CAx)
Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 21. Sep. 2010 08:57 <-- editieren / zitieren --> Unities abgeben: Nur für CADdoctor
Hallo CADdoctor, Zitat: Original erstellt von CADdoctor: Ich will alle Kombinationen von 1 bis 4 auflisten lassen. 4! ergibt 24 Lösungen. Ich bekomme aber mit meinem Code 204 Lösungen. Was mache Ich falsch?
Hm, dein Code passt nicht zum Problem, vielleicht ist das die Ursache deiner "falschen" Lösung. Zunächst müsstest du deine Aufgabe genauer spezifizieren: alle Kombinationen von 1 bis 4 auflisten - für wieviel Stellen? Einzigartig oder mit wiederholten Ziffern? Deine "Lösung" 4! passt du einer Permutation der Ziffern 1 bis 4 für eine genau vierstellige Zahl (ohne Wiederholungen). Dazu passt aber in keinster Weise die 7-fach geschachtelte Schleife in deinem Code. Von daher, was willst du genau machen und inwiefern willst du das mit Code tun? Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Ehrenmitglied V.I.P. h.c. Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007
|
erstellt am: 21. Sep. 2010 09:14 <-- editieren / zitieren --> Unities abgeben: Nur für CADdoctor
Zitat: Original erstellt von CADdoctor: Hallo!Ich will alle Kombinationen von 1 bis 4 auflisten lassen. 4! ergibt 24 Lösungen. Ich bekomme aber mit meinem Code 204 Lösungen. Was mache Ich falsch? Option Explicit Sub x() Dim p%, a%, b%, c%, d%, e%, f%, i& For p = 4 To 10 For a = 1 To 4 For b = 1 To 4 For c = 1 To 4 For d = 1 To 4 For e = 1 To 4 For f = 1 To 4 If a + b + c + d + e + f = p Then i = i + 1 Cells(i, 1).Resize(, 4) = Array(a, b, c, d, e, f) End If Next Next Next Next Next Next Next End Sub
Laut dem Code hättest du nicht 4*6 sondern 4^6, was wiederum 4096 Kombinationen ausmachen würde, allerdings übernimmst du ja nur die Summe aller Zahlen von 4-10 ... ------------------ MFG Rick Schulz Nettiquette (CAD.de) - Was ist die Systeminfo? - Wie man Fragen richtig stellt. - Unities [Diese Nachricht wurde von RSchulz am 21. Sep. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADdoctor Mitglied Technischer Zeichner (Versorgungstechnik)
Beiträge: 313 Registriert: 12.05.2007 Software: AutoCAD MEP 2013 Excellink 2013 Windows 7 x64 Pro SP 1 Office 2010 SP 1 Mozilla Firefox 13.0.1 Mozilla Thunderbird 13.0.1<P>Hardware: ASUS P6T WS Professional Intel Core i7-920, 4x 2.67GHz PNY Quadro FX 1800 Kingston HyperX DIMM XMP Kit 6GB Kingston HyperX SSD 120GB, SATA 6Gb/s
|
erstellt am: 21. Sep. 2010 09:15 <-- editieren / zitieren --> Unities abgeben:
Hallo Stefan, Der Code von Oberli Mike ist genau das was Ich brauche. Jedoch die einzelnen Zahlen in Spalten A bis D aufgeteilt. 1, alle Kombinationen von 1 bis 4 auflisten - für 4 Stellen 2, mit wiederholten Ziffern 4! ist da leider falsch! Mein Fehler! ------------------ Mit freundlichen Grüßen CADdoctor Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Ehrenmitglied V.I.P. h.c. IT Admin (CAx)
Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 21. Sep. 2010 09:16 <-- editieren / zitieren --> Unities abgeben: Nur für CADdoctor
Nachtrag: wenn du diese Permutationslösungen haben möchtest könnte eine Codelösung so aussehen (ist wüst, ich weiß ): Code: Sub BerechneAnzahl()i = 0 ' gefundene Lösungen For a = 1 To 4 ' a kann einfach durchlaufen ' überspringen zurücksetzen skip_this_b = False For b = 1 To 4 ' b darf nicht gleich a sein If b = a Then skip_this_b = True If skip_this_b = False Then skip_this_c = False For c = 1 To 4 ' c darf nicht a oder b sein If c = a Then skip_this_c = True If c = b Then skip_this_c = True If skip_this_c = False Then skip_this_d = False For d = 1 To 4 ' und d darf nicht den ersten Ziffern entsprechen If d = a Then skip_this_d = True If d = b Then skip_this_d = True If d = c Then skip_this_d = True If skip_this_d = False Then ' aha, eine neue Lösung i = i + 1 Debug.Print "Lösung " & i & ": " & a & b & c & d End If skip_this_d = False Next d End If skip_this_c = False Next c End If skip_this_b = False Next b Next a End Sub
Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Oberli Mike Ehrenmitglied V.I.P. h.c. Dipl. Maschinen Ing.
Beiträge: 3728 Registriert: 29.09.2004 Excel 2010 128GB SSD Windows 7
|
erstellt am: 21. Sep. 2010 09:18 <-- editieren / zitieren --> Unities abgeben: Nur für CADdoctor
|
CADdoctor Mitglied Technischer Zeichner (Versorgungstechnik)
Beiträge: 313 Registriert: 12.05.2007 Software: AutoCAD MEP 2013 Excellink 2013 Windows 7 x64 Pro SP 1 Office 2010 SP 1 Mozilla Firefox 13.0.1 Mozilla Thunderbird 13.0.1<P>Hardware: ASUS P6T WS Professional Intel Core i7-920, 4x 2.67GHz PNY Quadro FX 1800 Kingston HyperX DIMM XMP Kit 6GB Kingston HyperX SSD 120GB, SATA 6Gb/s
|
erstellt am: 21. Sep. 2010 09:18 <-- editieren / zitieren --> Unities abgeben:
Hallo! Der Wert 4 sollte die untere Grenze darstellen. (1+1+1+1) Der Wert 10 (leider Falsch da 16) sollte die obere Grenze darstellen. (4+4+4+4) ------------------ Mit freundlichen Grüßen CADdoctor [Diese Nachricht wurde von CADdoctor am 21. Sep. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Ehrenmitglied V.I.P. h.c. Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007
|
erstellt am: 21. Sep. 2010 09:19 <-- editieren / zitieren --> Unities abgeben: Nur für CADdoctor
|
RSchulz Ehrenmitglied V.I.P. h.c. Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 21. Sep. 2010 09:28 <-- editieren / zitieren --> Unities abgeben: Nur für CADdoctor
Zitat: Original erstellt von CADdoctor: Hallo Stefan, Der Code von Oberli Mike ist genau das was Ich brauche. Jedoch die einzelnen Zahlen in Spalten A bis D aufgeteilt.1, alle Kombinationen von 1 bis 4 auflisten - für 4 Stellen 2, mit wiederholten Ziffern 4! ist da leider falsch! Mein Fehler!
Zitat: Original erstellt von CADdoctor: Hallo!Der Wert 4 sollte die untere Grenze darstellen. (1+1+1+1) Der Wert 10 (leider Falsch da 16) sollte die obere Grenze darstellen. (4+4+4+4)
Irgendwie passt etwas nicht zusammen bzw. ist unvollständig oder ich verstehe es einfach nicht. Wolltest du nun alle Kombinationen, nur die, die in Summe 4-16 ergeben, oder doch nur die, die in Summe 4-10 ergeben? Ergänzung: Okay habs nun nochmal gelesen und auch verstanden. Irgendwie ist mir der Code von Oberli entgangen. Die Anzeige war eben etwas buggy... Ich bin hier aber raus, da es mir zuviel Exel ist ------------------ MFG Rick Schulz Nettiquette (CAD.de) - Was ist die Systeminfo? - Wie man Fragen richtig stellt. - Unities [Diese Nachricht wurde von RSchulz am 21. Sep. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |