string generieren



  • Hallo,
    ich habe zeichen gegeben
    // char dings[] = {'d','f','3','?'};
    dann noch int x;
    gibt man für x 2 ein, soll der code folgendes generieren:
    dd
    df
    d3
    d?
    fd
    ff
    f3
    f?
    3d
    3f
    33
    3?
    .
    .
    .

    Wie kann ich das versuchen.
    Das klappt nie:

    #include <stdio.h>
    #define MIN 0
    #define MAX 56
    
    int x= ?;
    char dings[] = {'d','f','3','?'};
    // char bums[] = {'8','d','.','%'};
    
    int main() {
        char i,j,k,l,m;	
    
    	for(i=MIN; i<MAX; i++) {
    	  for(j=MIN; j<MAX; j++) {
    	     for(k=MIN; k<MAX; k++) {
    	        for(l=MIN; l<MAX; l++) {
    		   for(m=MIN; m<MAX; m++) {
    		      printf("%c%c%c%c%c\n", i,j,k,l,m);
    					  }
    				        }
    			              }
    		                    }
    	                          }
    }
    


  • Abgesehen davon, dass dein Code miserabel eingerückt ist, kann der ja auch nicht mal im Ansatz funktionieren. Du weißt x einen Wert zu (kein Fragezeichen!), beziehst dich dann aber nie wieder auf diese Variable. Wie soll die je relevant für den Programmablauf werden? Abgesehen davon verstehe ich nicht, wie der Wert 2 für x zu der von dir beschriebenen Abfolge führen soll. Und dann verschachtelst du 5 (!) for-Schleifen, die die eigenen Zählvariablen als ASCII-Zeichen ausgeben. Schulaufgabe?

    Probier das mal:

    #include <stdio.h> 
    
    int x= 2; 
    char dings[] = {'d','f','3','?'}; 
    
    int main() { 
      int iSizeDings=sizeof(dings)/sizeof(dings[0]);
      for(int i=0;i<iSizeDings;i++) {
        for(int j=0;j<iSizeDings;j++) {
          printf("%c%c\r\n",dings[i],dings[j]);
        }
      }
     getchar();
    }
    


  • muah, du möchtest wohl Passwortlisten generieren?

    // wieviele Stellen soll die Ausgabe haben
        #define STELLEN 8
    int main() {
        char buf[STELLEN];
        char zeichen[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
        register int i, k;
    
        // init
        memset(buf, zeichen[0], STELLEN);
    
        // loop
        for (;;) {
    
    	// hochzaehlen
    	for (i = STELLEN - 1; i >= 0; i--) {
    
    	    // welches zeichen ist buf[i]?
    	    for (k = 0; k < sizeof(zeichen); k++) {
    		if (buf[i] == zeichen[k]) {
    		    k++;
    		    break;
    		}
    	    }
    
    	    // ist letztes zeichen?
    	    if (buf[i] == zeichen[sizeof(zeichen) - 1]) {
    		buf[i] = zeichen[0];
    		continue;
    	    } else {
    		buf[i] = zeichen[k + 1 % sizeof(zeichen) - 1];
    		break;
    	    }
    	}
    
    	// ausgabe
            // hier kann oder sollte man noch filtern
    	fwrite(buf, STELLEN, 1, stdout);
    	fwrite("\n", 1, 1, stdout);
    
    	// abbruchbedingung
    	for (i = 0; i < STELLEN; i++) {
    	    if (buf[i] != zeichen[0])
    		goto go;
    	}
    	break;
    
          go:;
        }
    
        return (0);
    }
    

    Deutschland !== :schland:



  • Brute-force methode;) :schland: :schland:


Anmelden zum Antworten