wuerfeln



  • Ich möchte in einem Array die Ziffern von 1 bis 6 auswürfeln. Dabei soll aber jede Ziffer nur einmal vorkommen.
    Also zum Beispiel : 1,3,6,4,2,5 ,aber nicht 6,6,1,3,5,5
    Kann jemand helfen?



  • hmmm, das hat aber eigentlich nix mit MFC/VC++ zu tun, sondern ist ein rein theoretisches Problem, von daher würde ich da mal eher im C++-Forum fragen (vielleicht schustern die dir sogar nen Super-Algo 😉 ) oder bei Rund um...
    Ansonsten vom Prinzip her merken, was du reinpackst oder auch einfach jeweils vergleichen, was schon drin ist im Array. Beispielsweise so:

    int a[6]={0};
    	for(int i=0;i<6;i++)
    	{
    		bool b=false;
    		do
    		{
    			b=false;
    			int x=rand()%6;
    			for(int j=0;j<i;j++)
    			{
    				if(x==a[j])
    					b=true;
    			}
    			a[i]=x;
    		}while(b);
    
    	}
    

    Ist bestimmt nicht die eleganteste Lösung, sollte aber Funktionieren.
    Hat wie gesagt nix mit MFC zu tun, vielleicht verschiebt dich ja jemand... ➡



  • /*header*/
    #include <vector>
    #include <algorithm>
    using namespace std;
    /*...*/
    vector<int> ivec;
    for(int i=1; i < 7;i++)//1-6 in den vector tun.
       ivec.push_back(i);
    random_shuffle(&ivec[0],&ivec[5]);
    

    Devil



  • Da gibts ne Funktion aus algorithm, die dir ein Array "durchschüttelt".

    Edit:
    Zu lahm, devil hat's schon geschrieben ...



  • Dieser Thread wurde von Moderator/in dEUs aus dem Forum MFC mit dem Visual C++ in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten