+ Antworten
Ergebnis 1 bis 7 von 7
  1. #1
    Micke
    Gast

    Standard Hochzählen

    ich komme irgendwie bei folgendem nicht weiter:

    ich suche einen Algirithmus welcher mir alle Varianten
    aus z.B. 3 stelligen strings auflistet.

    also a, .. , aa, ab, .. aab na usw.

    eine schleife von a bis z ist natürlich nicht das problem,
    aber wie mache ich das mit dem mehrstelligen ?
    ich probiere gerade in VB, aber ich bin über jeden Tip egal welche sprache dankbar, pseudocode wäre mir auch ganz recht.

    danke schon mal.



  2. #2
    Power Poster enzephalon wird schon bald berühmt werden Avatar von enzephalon
    Registriert seit
    28.01.2001
    Ort
    Metallistan
    Alter
    35
    Beiträge
    2.470
    Downloads
    0
    Uploads
    0
    Renommee-Modifikator
    331

    Standard

    würde Dir gerne helfen, aber leider "BAHNHOF"

    Sorry

    EnzephaloN



  3. #3
    Micke
    Gast

    Standard

    mhmm, das ist natürlich nicht gut

    vielleicht so:
    also ich suche ne schleife (oder auch iterativen aufruf) für alle buchstabencombos von "a" bis "zzz"

    wie geht det ?



  4. #4
    Power Poster Harvey ist ein sehr geschätzer MenschHarvey ist ein sehr geschätzer MenschHarvey ist ein sehr geschätzer Mensch Avatar von Harvey
    Registriert seit
    26.07.2000
    Ort
    Planet Erde, Milchstraße
    Alter
    47
    Beiträge
    7.765
    Downloads
    0
    Uploads
    0
    Renommee-Modifikator
    872

    Standard

    Hi,

    mit oder ohne Sonderzeichen (im Beispeil nein)?
    Leerzeichen in der Mitte zulässig (im Beispiel nein)?
    Unterscheidung Groß-/Kleinschrift oder nur klein (im Beispiel nur klein)?

    Code:
    dim i as Integer
    dim j as Integer
    dim k as Integer
    dim s as String
    
    ' einstellige Strings
    For i = 97 To 122
        s = chr(i)
        ' Bearbeitung (z.B. Ausdrucken)
    next i
    
    ' zweistellige Strings
    For i = 97 To 122
        For j = 97 To 122
            s = chr(i) & chr(j)
            ' Bearbeitung (z.B. Ausdrucken)
        Next j
    Next i
    
    ' dreistellige Strings
    For i = 97 To 122
        For j = 97 To 122
    	    For k = 97 To 122
            	s = chr(i) & chr(j) & chr(k)
    	        ' Bearbeitung (z.B. Ausdrucken)
             next k
        Next j
    Next i


    Gruß Harvey
    Who on earth is general failure? And why has he access to my hard disk?
    Bitte besucht unsere Sponsoren. Wir sammeln für eine Suite in der Karibik

  5. #5
    Micke
    Gast

    Standard

    vielen dank harvey,

    haste dir aber Mühe gemacht - rot_werd.
    mein prob - es ist zwar mehrstellig, aber wenn ich erweitere: bei einem 10-stelligen String müßte ich dann eine 10x verschachtelte schleife nehmen, deswegen hatte ich das von vorn herein verworfen.

    Ideen?
    Soll ich etwas Nervennahrung mitschicken



  6. #6
    Power Poster Harvey ist ein sehr geschätzer MenschHarvey ist ein sehr geschätzer MenschHarvey ist ein sehr geschätzer Mensch Avatar von Harvey
    Registriert seit
    26.07.2000
    Ort
    Planet Erde, Milchstraße
    Alter
    47
    Beiträge
    7.765
    Downloads
    0
    Uploads
    0
    Renommee-Modifikator
    872

    Standard

    Hi,

    dann bietet sich eine rekursive Prozedur an.

    Code:
    sub naechstesZeichen(s as String, max as Integer)
    
    dim i as Integer
    dim s1 as String
    
    s1 = s 'Umkopieren, weil ich nicht weiss, ob das Original mit veraendert wird
    For i = 97 To 122
        s1 = s1 & chr(i)
        ' s1 bearbeiten (z.B. Ausgeben)
        if Len(s1) < max Then ' nur, wenn noch nicht genug Zeichen:
            call naechstesZeichen(s1, max) ' sich selbst aufrufen, um weitere Zeichen anzuhaengen
    Next i
    
    End Sub
    
    'Hauptprogramm
    call naechstesZeichen("", 10)
    Das Umkopieren kann man sich schenken, wenn man
    sub naechstesZeichen(byVal s as String, max as Integer)
    deklarieren kann (so tief stecke ich in VB nicht drin)
    Außerdem kann man das Laufzeitverhalten noch verbessern, indem man die aktuelle Länge mit übergibt statt sie berechnet:

    Code:
    sub naechstesZeichen(byVal s as String, byVal laenge as Integer, max as Integer)
    
    dim i as Integer
    
    For i = 97 To 122
        s = s & chr(i)
        ' s bearbeiten (z.B. Ausgeben)
        if laenge < max Then ' nur, wenn noch nicht genug Zeichen:
            call naechstesZeichen(s, laenge+1, max) ' sich selbst aufrufen, um weitere Zeichen anzuhaengen
    Next i
    
    End Sub
    
    'Hauptprogramm
    call naechstesZeichen("", 0, 10)
    Getestet hab ich es nicht, bitte nicht schlagen, wenn nen Fehler drin ist


    Gruß Harvey
    Who on earth is general failure? And why has he access to my hard disk?
    Bitte besucht unsere Sponsoren. Wir sammeln für eine Suite in der Karibik

  7. #7
    Micke
    Gast

    Standard

    stimmt, ich meine natürlich rekursiv

    Harvey vielen dank, genau das hatte ich gesucht.
    Weiß dein Chef eigentlich daß du unterbezahlt bist



Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Ähnliche Themen

  1. Word/VB: automatisch Tage hochzählen.
    Von Mario im Forum MS Office
    Antworten: 0
    Letzter Beitrag: 18.01.2006, 08:22

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein

Search Engine Friendly URLs by vBSEO 3.6.0