Microsoft Excel

Herbers Excel/VBA-Archiv

Lösung mit VBA | Herbers Excel-Forum


Betrifft: Lösung mit VBA von: alifa
Geschrieben am: 16.11.2009 19:43:54

Hallo,
mein Makro ist 3 Stunden lang gelaufen- leider ohne Ergebnis. Ich suche 4 natürliche Zahlen a,b,c,d . Jede enthält die Ziffern 0 bis 9 genau einmal. Es sind also zehnstellige Zahlen. Die 0 steht nicht am Anfang. Bedingung: a=3*b+2*c+d; kann mir jemand helfen?
Gruß, Erhard

  

Betrifft: AW: Lösung mit VBA von: Josef Ehrensberger
Geschrieben am: 16.11.2009 21:21:46

Hallo Erhard,

willst du die erste Kombination die diese Bedingung erfüllt oder alle oder...?


Gruß Sepp



  

Betrifft: AW: Lösung mit VBA von: alifa
Geschrieben am: 17.11.2009 07:00:24

Hallo Sepp,
ich nehme an, es gibt nicht viele. Am Besten alle. Am wichtigsten für mich ist eigentlich nicht das Ergebnis, sondern die Prozedur, das Makro!
Gruß, Erhard


  

Betrifft: erste Ergebnisse von: Erich G.
Geschrieben am: 17.11.2009 09:43:35

Hi Erhard,
diese 26 Lösungen kommen recht flott.
Es werden etliche mehr, ich habe schon mindestens drei mal so viele gesehen.
Jedenfalls hoffe ich, dass das Lösungen in deinem Sinne sind:

 ABCD
16140852739102345678910234567891023568794
26140853729102345678910234567891023569784
36140853792102345678910234567891023569847
46140873592102345678910234567891023589647
56140978523102345678910234567891023694578
66140978532102345678910234567891023694587
76142053798102345678910234567891024769853
86142073598102345678910234567891024789653
96142079583102345678910234567891024795638
106143052879102345678910234567891025768934
116143082579102345678910234567891025798634
126143257809102345678910234567891025973864
136145230798102345678910234567891027946853
146145237809102345678910234567891027953864
156145270398102345678910234567891027986453
166145820739102345678910234567891028536794
176145823709102345678910234567891028539764
186145978302102345678910234567891028694357
196145978320102345678910234567891028694375
206147029583102345678910234567891029745638
216147032598102345678910234567891029748653
226147052398102345678910234567891029768453
236149753802102345678910234567891032469857
246149753820102345678910234567891032469875
256149780523102345678910234567891032496578
266149780532102345678910234567891032496587

Und das hat sie erzeugt:
Option Explicit

Sub aaa10()
   Dim a As Double, b As Double, c As Double, d As Double, zz As Long

   With Application
      .Calculation = xlCalculationManual
      .EnableEvents = False
   End With
   For b = 1023456789 To 2194786530#
      If Chk09(b) Then
         For c = 1023456789 To 2743198650#
            If Chk09(c) Then
               For d = 1023456789 To 4389610275#
                  If Chk09(d) Then
                     a = 3 * b + 2 * c + d
                     If Len(CStr(a)) > 10 Then Exit For
                     If Chk09(a) Then
                        zz = zz + 1
                        With Cells(zz, 1)
                           .Select
                           .Resize(, 4) = Array(a, b, c, d)
                        End With
                        'Application.StatusBar = "d " & CStr(d) & " a " & CStr(a)
                        DoEvents
                     End If
                  End If
               Next d
            End If
         Next c
      End If
   Next b
   With Application
      .Calculation = xlCalculationAutomatic
      .EnableEvents = True
   End With
   'Application.StatusBar = False
End Sub

Function Chk09(dblT As Double) As Boolean
   Dim strT As String, ii As Byte, arr(0 To 9) As Boolean

   strT = CStr(dblT)
   For ii = 1 To 10
      If arr(Mid(strT, ii, 1)) Then Exit Function
      arr(Mid(strT, ii, 1)) = True
   Next ii
   Chk09 = True
End Function
Etwas möchte ich dich jetzt noch fragen: Wie kommst du eigentlich zu diesen Aufgaben?
Denkst du sie dir selbst aus? Gibt es einen praktischen Hintergrund?

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: erste Ergebnisse von: alifa
Geschrieben am: 17.11.2009 10:32:42

Hallo Erich,
zunächsst herzlichen Dank! Die Zahlen a,b,c,d sollen unterschiedlich sein. Um einzugrenzen noch die Bedingung: e=(c+b-d)/2; Die Zahl e ist zehnstellig, beinhaltet die Ziffern 0-9 genau einmal und ist unterschiedlich zu den anderen(a,b,c,d). Diese Aufgaben finde ich in verschiedenen Medien. Es ist Freizeitbeschäftigung. Ich suche solche Themen aus, die übers Programmieren zu lösen sind, weil das mich einfach fasziniert. Praktische Vorteile habe ich dadurch keine.


Beiträge aus den Excel-Beispielen zum Thema "Lösung mit VBA"