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.