|
Evo mucim muku sa ovim programom vec neko vreme...radi se o programu koji treba da deli random karte...radi normalno i kao sto ocekujem ali posle veceg broja ponavljanja pojavi se bag...
#include <iostream>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <ctime>
using namespace std;
void izvuci_kartu();
int random_broj(int x);
int prva_slobodna(int g);
int brojkarata=52;
char* redna_karta[13]={"as","dva","tri","cetri","pet","sest","sedam","osam","devet","deset","zandar","dama","kralj"};
char* znak_karte[4]={"herc","karo","pik","tref"};
bool spil[52];
int main() {
int n;
srand(time(NULL));
cout << "Koliko karata zelite da izvucete (0 za izlaz): " << endl;
while(true) {
cout << endl;
cin >> n;
if (n==0) break;
for (int i=0;i<n;i++) izvuci_kartu();
}
return 0;
}
void izvuci_kartu() {
int znk,br,n,x;
n=random_broj(brojkarata--);
if (brojkarata==0) {
brojkarata=52;
for (int l=0;l<52;l++) spil[l]=false;
cout << "---------------------------" << endl << "Ponovo mesam" << endl << "---------------------------" << endl;
}
x=prva_slobodna(n);
br= x % 13;
znk=x / 13;
cout << redna_karta[br] << " - " << znak_karte[znk] << endl;
}
int random_broj(int x){
return rand() % x;
}
int prva_slobodna(int g) {
int o=-1;
g++;
while (g-- > 0) {
o++;
while (spil[o]) o++;
}
spil[o]=true;
return o;
}
|