Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 23
  1. #1
    Sobig Wurm Avatar von Leange
    Registriert seit
    06.09.2008
    Beiträge
    220

    Standard Zahlen Bruteforce

    Hi

    Ich möchte folgendes schreiben:

    ein Programm das alle Kombinaten für die Ziffern von 0-9 bei 5 Stellen
    (also 00000 bis 99999 ) durch geht aber nur die Kombinationen ausgibt die bestimmte Bedingungen erfüllen! (Der zweite Teil ist eigentlich kein Problem.)

    Wie gehe ich das am besten an?

    Ach so ... in C++ un ich bin (noch) nicht besonders gut darin! :o

    MFG Leange

    Freiheit stirbt mit Sicherheit

  2. #2
    this.hatcolor = gray Avatar von Ancient87
    Registriert seit
    29.03.2009
    Beiträge
    143

    Standard

    Das ganze hoert sich schwer nach Hausuebung an aber meh hier fast c++ pesudeo code, ich geb dir nicht die ganze loesung aber der rest sollte dir klar sein

    Code:
    for(int i = 0; i < 10; i++)
    {
     for(int j = 0; j < 10; j++)
     {
      for(int k = 0; k < 10; k++)
      {
          /* den rest kannst dir denken  (i hope)*/
           / * im letzten nestin level */
           if(i == predicate && j == predicate && usw)
           cout << i << j << k << //usw << endl;
       }
      }
    }
    Knowledge is power - don't abuse it!

    Fuer niveauvolle Anfragen bin ich unter 139156343 erreichbar

  3. #3
    Sobig Wurm Avatar von Leange
    Registriert seit
    06.09.2008
    Beiträge
    220

    Standard

    Danke! Einwandfrei ^^

    ähm ne inner Schule hab ich sowas leider noch nicht
    aber es is ne Übungsaufgabe ja ^^

    Danke noch mal
    MFG Leange

    Freiheit stirbt mit Sicherheit

  4. #4
    Das Leben ist der Lehrer Avatar von DoS
    Registriert seit
    18.08.2008
    Beiträge
    528

    Standard

    Code:
    float zahl;
    
    for (i=0;i<=9;i++)
    {
         for (j=0;j<=9;j++)
    {
         for (k=0;k<=9;k++)
    {
         for (l=0;l<=9;l++)
    {
         for (m=0;m<=9;m++)
    {
    
        zahl = m && l && k && j && && i;
        // Die Aufgaben mit der Zahl
    }
    }
    }
    }
    }
    Keine Ahnung, ob das funktioniert, ich bin selbst Anfänger.

    Vor allen Dingen weiß ich gar nicht, ob es das && in dieser Nutzung gibt. Es soll so wie folgendes bei javascript wirken: Bei einer Zahl die in einem String steht. Wenn man solch zwei Zahlen (in einer variable) mit dem "+" addiert kommt z.B. bei : stringzahl1 + stringzahl2 (zahl1 ist 7 und zahl2 5) also 7 + 5= 75 . Dort dient das + als Verknüpfungsoperator.

    So soll das && bei mir wirken.

    Hoffentlich ihr habt es verstanden .

    gruß

    Edit: Lol, jetzt habe ich mal mein Gehirn angestrengt und dann war ein schneller ... Ancient hat das mit den && so gelöst indem er ein cout benutzt hat. Ich wollte es in eine Variable schreiben. Und ja ich saß anscheinend 15 Min. an meinem Post . Musste mir ja auch erst was überlegen

    gruß
    Geändert von DoS (25.06.2009 um 14:57 Uhr)

  5. #5
    Bad Times Virus
    Registriert seit
    14.03.2009
    Beiträge
    579

    Standard

    ähmm wiso so kompliziert:
    Code:
     int i;
     while(i<10000){
     i++;
     if bedingungtesten(i) 
       cout<<i; 
    }

  6. #6
    this.hatcolor = gray Avatar von Ancient87
    Registriert seit
    29.03.2009
    Beiträge
    143

    Standard

    @wacked
    weil er nehme ich an bestimmte attribute der Zahl checken will z.B die Zehnerstelle mindestens 2x so gross wie die 100er oder so. und das kannst du recht schwer wenn du das ganze als int machst (geht schon aber dann musst du anfangen mit bitmasking )

    @DoS in c++ ist && ein logisches und & ist ein bitweises und. deine verknuepfung von && wird also in einem boolschen Wert (true oder false rauskommen) in deinem Falle true weil alles != 0 true ist. strin concatentation kannst du mit dem "+" operator machen.

    Ausserdem warum willst du fuer eine ganzzahl einen float hernehmen ?

    MFG
    Knowledge is power - don't abuse it!

    Fuer niveauvolle Anfragen bin ich unter 139156343 erreichbar

  7. #7
    Das Leben ist der Lehrer Avatar von DoS
    Registriert seit
    18.08.2008
    Beiträge
    528

    Standard

    @wacked: Das geht nicht, weil bei z.B. 455 nur eben 455 angezeigt würden und nicht 00455. Und wenn du bruteforced kommt es auf jede Stelle an. Z.B. bei einem passwort, das "04" heißt. Ist zwar ein schlechtes Beispiel, aber da würde die Möglichkeit dann nicht zutreffen.

    Berichtigt mich, wenn ich falsch liege.

    Zudem würde das schon beim Anfang (vielleicht) nicht funktionieren, weil du i nicht =0 gesetzt hast. =)

    gruß

    Edit: Verfickte scheiße. Du bist schon wieder schneller

    @ancient: Weil ein normaler integer nur bis zu 5 Dezimal stellen speichern kann. Mit dem Float wollte ich nur sicher gehen, falls er ein bisschen erweitern möchte .

    Also, wie bei JavaScript, hätte ich mir ja denken können . =)


    gruß
    Geändert von DoS (25.06.2009 um 15:11 Uhr)

  8. #8
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    @wacked

    Du musst i Initialisieren, da der Wert von i sonst undefiniert ist (nämlich der Wert, der vorher an dieser Speicherstelle war - was eigentlich alles sein kann)

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

  9. #9
    this.hatcolor = gray Avatar von Ancient87
    Registriert seit
    29.03.2009
    Beiträge
    143

    Standard

    ja dann verwendet man nen long
    Knowledge is power - don't abuse it!

    Fuer niveauvolle Anfragen bin ich unter 139156343 erreichbar

  10. #10
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    Zitat Zitat von DoS Beitrag anzeigen
    @ancient: Weil ein normaler integer nur bis zu 5 Dezimal stellen speichern kann. Mit dem Float wollte ich nur sicher gehen, falls er ein bisschen erweitern möchte .
    Ich heiße zwar nicht Ancient, aber das kann ich so nicht stehen lassen.
    Du gehst scheinbar davon aus, dass ein Integer 16 Bit groß ist. Dies mag zwar für 16bit Betriebssysteme gelten, ist aber in der Zeit der 32bit (bzw. 64bit) Systeme nicht mehr gültig.

    Starte doch mal folgendes Programm:
    Code:
    #include <stdio.h>
    
    
    int main(int argc, char *argv[])
    {
        printf("Ein Integer ist %d Bit gross!\n", sizeof(int) * 8);
        return 0;
    }
    Ausgabe:
    Ein Integer ist 32 Bit gross!
    (dazu ist natürlich zu sagen, dass ich ein 32bit Betriebssystem benutze)

    Ein "normaler" Integer ist folglich 32bit bzw. 64bit groß!

    Mit einem solchen (signed) int kannst du maximal die Zahl 2,147,483,647 abbilden.
    Das heißt: 9 Stellen genau und ein paar 10-stellige Zahlen.

    @Threadstarter

    Ich hab hier mal kurz eine "einfachere" Variante geschrieben.
    Es wird einfach hochgezählt und die Ziffern werden einzeln extrahiert.
    Dort wo das "TODO" steht, können Bedingungen eingefügt werden, z.B.:
    Code:
    if (hunderter != 5) continue;
    Also: nur Zahlen mit xx5xx ausgeben.

    Hier der Code:
    Code:
    #include <stdio.h>
    
    #define ZAHL_EXTRAHIEREN(name, nummer, var) \
        name = var / nummer; \
        var %= nummer;
    
    
    int main(int argc, char *argv[])
    {
        int i;
        int z;
        
        int einer;
        int zehner;
        int hunderter;
        int tausender;
        int zehntausender;
        
        for(i = 10000; i < 99999; i++)
        {
            z = i;
            
            ZAHL_EXTRAHIEREN(zehntausender, 10000, z);
            ZAHL_EXTRAHIEREN(tausender, 1000, z);
            ZAHL_EXTRAHIEREN(hunderter, 100, z);
            ZAHL_EXTRAHIEREN(zehner, 10, z);
            ZAHL_EXTRAHIEREN(einer, 1, z);
            
            // TODO: Bedingungen hier
            
            printf(
                "%d = %d%d%d%d%d\n",
                i,
                zehntausender, tausender,
                hunderter, zehner, einer
            );
        }
        
        return 0;
    }

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

Seite 1 von 3 123 LetzteLetzte

Stichworte

Berechtigungen

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