4-stellige Zahl generieren



  • Hallo,
    Ich schreibe gerade ein Programm um eine 4-stellige zufällige Zahl zu generieren, wo sich die Ziffern nicht wiederholen.
    Mit diesem Code habe ich es versucht aber es gibt da ein Problem: die zweite Zahl ist immer die "0".(Z.b. 2078, 7091, 8037...) Wenn ich aber diese Möglichkeit ausschließe(b==a||b==0), ist dann die vierte Zahl immer die "0".(2390, 2540, 1780...). Warum passiert das und kann mann eine Lösung finden? Ich hätte gerne das die Zahl hin und wieder mal auch eine "0" enthält.
    Danke im voraus!

    srand(time(NULL));
    	  a=rand()%9+1;
    	    for(int i=0; b==a;i++)
    	       b= rand()%9+1;
    	    for(int i=0; c==a||c==b;i++)
    	      c= rand()%9+1;	
    	    for(int i=0; d==a||d==b||d==c;i++)
    	      d= rand()%9+1;
    	V[0]=a;
    	V[1]=b;
    	V[2]=c;
    	V[3]=d;
    	    for(int i=0;i<4;i++)
    	      cout<<V[i];
    


  • In deiner for-Schleife hast du einen Vergleich mit uninitialisierten Variablen. Mit einer do-while Schleife kannst du das besser lösen.


  • Mod

    Deine Schleifenlogik ist falsch. Du prüfst ob b ungleich a ist, bevor du b überhaupt einen Wert zuweist. b hat bei dir anscheinend zufällig den Anfangswert 0 (im Allgemeinen ist das aber undefiniert). 0 ist ungleich a, daher fängt die Schleife gar nicht erst an.
    Vielleicht willst du lieber do..while?



  • SeppJ schrieb:

    Deine Schleifenlogik ist falsch. Du prüfst ob b ungleich a ist, bevor du b überhaupt einen Wert zuweist. b hat bei dir anscheinend zufällig den Anfangswert 0 (im Allgemeinen ist das aber undefiniert). 0 ist ungleich a, daher fängt die Schleife gar nicht erst an.
    Vielleicht willst du lieber do..while?

    patrick246 schrieb:

    In deiner for-Schleife hast du einen Vergleich mit uninitialisierten Variablen. Mit einer do-while Schleife kannst du das besser lösen.

    Danke an beide, jetzt klappt es super!
    Dankeschön!


Anmelden zum Antworten