Avatar billede alizweb Nybegynder
21. oktober 2003 - 16:15 Der 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).

Håber der er nogen der vil hjælpe mig.
Avatar billede arne_v Ekspert
21. oktober 2003 - 16:33 #1
Det kan gøres på mange måder.

Men her er et forslag:

#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>

using namespace std;

const int N = 6;

void init(int *team)
{
  for(int i = 0; i < N; i++)
  {
      team[i] = 0;
  }
}


int count(int *team, int v)
{
  int res = 0;
  for(int i = 0; i < N; i++)
  {
      if(team[i]==v) res++;
  }
  return res;
}

void fill(int *team)
{
  for(int i = 0; i < N; i++)
  {
      if(team[i]==0) team[i] = 2;
  }
}

int main()
{
  string names[N] = { "aa", "bb", "cc", "dd", "ee", "ff" };
  srand(time(NULL));
  int *team = new int[N];
  init(team);
  while(count(team,1)<N/2)
  {
      int ix = (rand() >> 8) % N;
      team[ix] = 1;
  }
  fill(team);
  cout << "Team 1:" << endl;
  for(int i = 0; i < N; i++)
  {
      if(team[i]==1) cout << names[i] << endl;
  }
  cout << "Team 2:" << endl;
  for(int i = 0; i < N; i++)
  {
      if(team[i]==2) cout << names[i] << endl;
  }
  return 0;
}
Avatar billede alizweb Nybegynder
21. oktober 2003 - 16:56 #2
Kigger lige på det...
Så får du point senere... Okay?
Avatar billede arne_v Ekspert
21. oktober 2003 - 17:07 #3
Selvfølgelig.
Avatar billede alizweb Nybegynder
21. oktober 2003 - 21:47 #4
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.

Du får selvfølgelig point alligevel!
Avatar billede arne_v Ekspert
21. oktober 2003 - 22:09 #5
Sagtens:

#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>

using namespace std;

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;
}
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester