21. oktober 2003 - 16:15Der er
4 kommentarer og 1 løsning
Hold generater
Jeg har nu i langtid prøvet at lave en såkaldt "hold generater", hvor man skal kunne skrive 14 navne (eller mindre) og programmet laver så selv 2 hold ud af det, helt tilfældige hold!
jeg er newbie til C og har derfor fettet rundt i 2 dage med det nu, og kan stadig ikke finde ud af det, nogen der vil hjælpe mig?
Jeg tar både i mod plain C++ (Dos) og Borland CPP 6 (VCL).
Det er godt, men kan du ikke lave det sådan så men først skriver hvor mange spillere der skal være, og der efter skriver man navnet på alle spillerne? Så ville jeg blive meget glad.
void init(int *team, int n) { for(int i = 0; i < n; i++) { team[i] = 0; } }
int count(int *team, int n, int v) { int res = 0; for(int i = 0; i < n; i++) { if(team[i]==v) res++; } return res; }
void pick(int *team, int n) { while(count(team,n,1)<(n/2)) { int ix = (rand() >> 8) % n; team[ix] = 1; } }
void fill(int *team, int n) { for(int i = 0; i < n; i++) { if(team[i]==0) team[i] = 2; } }
void show(int *team, string *names, int n, int v) { cout << "Team " << v << ":" << endl; for(int i = 0; i < n; i++) { if(team[i]==v) cout << names[i] << endl; } }
int main() { cout << "Enter number of players: "; int n; cin >> n; string *names = new string[n]; for(int i = 0; i < n; i++) { cout << "Enter player " << (i+1) << ":"; cin >> names[i]; } int *team = new int[n]; init(team,n); srand(time(NULL)); pick(team,n); fill(team,n); show(team,names,n,1); show(team,names,n,2); return 0; }
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.