Forum huvudsida -> Programmering -> behöver hjälp
Sidor: 1
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] [/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:
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:
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 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 ) ä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. ------------------------- 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
Du får inte posta i den här tråden | Till toppen
Datum
2025-01-02 16:07
Vecka: 01
Besökare
Inloggade: 0
Gäster: 605
Medlemmar
Medlemmar: 53576
Forum
Senaste inlägget: HAHA MÄNNISKAN LEVER ÄN (13:45 - 18:e Januari 2019, av Hetzz)
Wiki
Senaste ändringen:
3D (rev: 1, tid: 09:40 - 13:e November 2015)
Chatt
#blinkenlights @ Libera.Chat
Gratis shellkonton för IRC, webbsidor mm.