Forum: behöver hjälp

Forum huvudsida -> Programmering -> behöver hjälp

Sidor: 1

Till botten

sandra 11:46 - 4:e September 2005 | Post #1
Medlem
Inlägg: 5


Skicka PM
den här for satsen vilken for exekveras först.

********************************************************
float runSimulation (int base, int nrOfRuns){
cout<<"runing sim"<<endl;
float price = 0,
average=0;
int
throws= 0;
for (int i = 0; i<nrOfRuns; i++}{ //vet inte vad i gör här och vad är i,

throws=throwCoin();
price=base;
for(int j=0 ; j<throws ; j++)//vad är j och vad gör den här
price=price*base;
average=average+price;
}
average=average/nrOfRuns;
return average;
}

******************************************************

int throwCoin(){

int throws=0;
int side=0; //vad menas med side=o,vilken sidan är kan någon ge ex på det
const int noll=0;
while (side==noll){
side=(rand() %2);
throws++;
}
return throws;
}
[/B][/B][/U][B][B]

Smiley Smiley [/B][B][U]
[/B][/U][B][U]

-------------------------
nyfiken



ozamosi 13:27 - 4:e September 2005 | Post #2
Administratör
Inlägg: 1129


Skicka PM
Ok...

Om jag förstår rätt fungerar koden, men du vill ha den förklarad?

En for-loop har tre delar. Man kan skriva dem såhär:
  1. for(initiering; vilkor; förändring)
  2. {kod}

Först har vi initieringsbiten. Där tilldelar vi t ex en variabel ett startvärde (i det här fallen ger vi variablerna i resp j värdet 0). Sen har vi vilkoret. I den första är vilkoret att loopen ska köra sålänge i är mindre än nrOfRuns. I den andra är vilkoret att loopen ska köra sålänge j är mindre än variabeln throws. Till slut har vi förändringen. För varje varv loopen körs så körs den här biten. I de här fallen ökas variablerna i resp j med ett. Sen har vi koden inuti forloopen som körs de gånger då vilkoret blir sant.

För att tydliggöra ordningen skriver jag såhär:
  1. for(a;b;c)
  2. {d}

När den kodsnutten körs kommer följande att hända:
a, b, d, c, b, d, c, b, d osv tills b inte är sann.

Förhoppningsvis har jag varit så tydlig att det framgick vad i och j gör.


Nu till int side = 0. Det är en nolla som står efter likhetstecknet. Det som händer i just den raden är att variabeln side skapas och får värdet 0. Variabeln side används för att få ett slumpat värde mellan 0 och 1. Funktionen rand() ger ett slumptal mellan noll och heltenkeltgaletmyckethugaligenvastort, och %2 dividerar svaret på två och sparar resten, vilket gör att du får antingen noll eller ett. Sen kommer loopen att sluta köras så fort side inte är 0, och skickar sen tillbaka antalet varv loopen kördes till den funktionen som anropade throwCoin()


Det här blev såpass förvirrat att jag tvivlar på att någon förstår Smiley Men kom tillbaka med fler frågor så kan jag klargöra.

-------------------------
Ljusblå



ozamosi 13:58 - 4:e September 2005 | Post #3
Administratör
Inlägg: 1129


Skicka PM
Tillägg: jag tror ditt problem är att du tänker för lite som en dator, och för mycket som en människa. Vilket iofs är ganska logiskt, med tanke på att du (antagligen Smiley ) är en människa.

Vi tar ett uttryck som int i som exempel. i betyder ingenting innan den raden. Efter den raden är i en varabel av typen int (integer, heltal)

-------------------------
Ljusblå



sandra 18:29 - 4:e September 2005 | Post #4
Medlem
Inlägg: 5


Skicka PM
throws= 0;
for (int i = 0; i<nrOfRuns; i++}{
throws=throwCoin();
price=base;
for(int j=0 ; j<throws ; j++)//vad är j och vad gör den här
price=price*base;
average=average+price;
}
average=average/nrOfRuns;
return average;
}

Vet vad en for loop gör,men vet inte när den andra for loopet hopar in i varvet när det är andra for loop att göra varvet???,,r det bara första raden i andra for loop som exekveras eller båda.
Smiley

-------------------------
nyfiken



ozamosi 19:20 - 4:e September 2005 | Post #5
Administratör
Inlägg: 1129


Skicka PM
Det som händer är att den första for-loopen kör. När den kör kod-delen (det mellan { och }) så innehåller den kod-delen en annan for-loop, som körs. När den är färdig fortsätter koden efter den, och den kommer ett par rader senare till slutet av den första for-loopen.

Det spelar ingen roll för den andra for-loopen att den ligger i en annan for-loop, och inte heller den första for-loopen bryr sig om att det ligger en for-loop i dess loop-del.

-------------------------
Ljusblå



Celeron 06:15 - 5:e September 2005 | Post #6
Medlem
Inlägg: 418


Skicka PM
Eftersom den andra for satsen inte har några klamrar ({ och }) så körs bara raden efter for satsen.

-------------------------
Det viktigaste är att ha roligt! Har ny hemsida: http://www.freewebs.com/cpperik/



Sidor: 1

Forum huvudsida -> Programmering -> behöver hjälp
Atom feed

Du får inte posta i den här tråden | Till toppen