Gå til innhold

Hjelp til funksjon, holde orden på et visst antall++


Anbefalte innlegg

Heisann! Jeg holder på med et "Roll the dice" program, og trenger hjelp med denne funksjonen (Ignorer "RANDOM FUNKSJON", jeg så ikke vitsen i å inkludere funksjonen som genererer random):

 

int roll(int r)
{
int roll_player[r];
int roll_comp[r];

int result_player;
int result_comp;
bool check_won;

for (int i = 0; i < r; i++)
{
	roll_player[i] = RANDOM FUNKSJON;
	roll_comp[i] = RANDOM FUNKSJON;
}

result_player = ??;
result_comp = ??;

check_won = (result_player > result_comp);
return check_won;
}

 

Variablen result_player skal fungere på denne måten: roll_player[1] + roll_player[2] + roll_player[3]......... + roll_player[r].

Det jeg ikke finner ut av, er hvordan jeg holder orden på hvor mange "r" er, slik at result_player plusser like mange roll_player med hverandre.

 

Vanskelig å forklare dette, men håper det er forståelig til en viss grad

Endret av Csvk!
Lenke til kommentar
Videoannonse
Annonse

Du kan ikke skrive

int roll_player[r];

siden r er en variabel. Kompilatorn må vite hvor mye minne som skal allokeres. Hvis du skal ha dynamise minnestørelser må du bruke new(C++) eller malloc©.

 

 

Ellers må du nok bruke en for-løkke for å summere.

 

Siden du ikke sparer på de individuelle kastene etter funksjonen er ferdig, kan du like greit gjøre slik:

int roll(int r)
{
int result_player = 0;
int result_comp = 0;

for (int i = 0; i < r; i++)
{
	result_player += RANDOM FUNKSJON;
	result_comp += RANDOM FUNKSJON;
}

return (result_player > result_comp);
}

Endret av JeffK
Lenke til kommentar
Du kan ikke skrive

int roll_player[r];

siden r er en variabel. Kompilatorn må vite hvor mye minne som skal allokeres. Hvis du skal ha dynamise minnestørelser må du bruke new(C++) eller malloc©.

 

 

Ellers må du nok bruke en for-løkke for å summere.

 

Siden du ikke sparer på de individuelle kastene etter funksjonen er ferdig, kan du like greit gjøre slik:

int roll(int r)
{
int result_player = 0;
int result_comp = 0;

for (int i = 0; i < r; i++)
{
	result_player += RANDOM FUNKSJON;
	result_comp += RANDOM FUNKSJON;
}

return (result_player > result_comp);
}

 

Oi, det gjorde alt så mye lettere! Takk skal du ha :D

 

EDIT:

Hvordan hadde koden sett ut om jeg skulle spart på hvert enkelt kast?

Endret av Csvk!
Lenke til kommentar

Om du har en øvre grense R for hva r kan være, kan du f.eks. returnere en array av størrelse 2R, hvor de første R elementene tilhører spilleren og de andre tilhører computer. Ellers kan du pakke det inn i en klasse eller struktur, eller sende to pekere(evt referanse i c++) til funksjonen som peker på områder med plass til å lagre kastene.

Lenke til kommentar

Bruk stl.

 

på denne måten slipper du minnehåndteringa med new/delte.

nt roll(int r)
{
std::vector<int> roll_player;
roll_player.resize(r);
std::vector<int> roll_comp;
roll_comp.resize(r);

int result_player;
int result_comp;
bool check_won;

for (int i = 0; i < r; i++)
{
	roll_player[i] = RANDOM FUNKSJON;
	roll_comp[i] = RANDOM FUNKSJON;
}

result_player = ??;
result_comp = ??;

check_won = (result_player > result_comp);
return check_won;
}

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...