Vinnaren i pepparkakshustävlingen!
  • 1
  • 2
2022-06-28, 21:19
  #1
Medlem
jag läser en sommarkurs i c++ och lärarna är hopplösa att få tag i. jag ska göra ett spel, jag har 4 stycken while loopar, där varje steg i spelet är en egen while loop typ. vill man börja om spelet får man välja det i sista while loopen och då kommer man till den första igen osv

nåja. det jag undrar är hur man startar om en while loop. i loopen frågar jag hur mycket pengar man vill satsa, och skriver man in mindre pengar än vad man har på sitt "konto" ska man bli frågan om man vill satsa mindre eller sätta in mer pengar. vill man satsa mindre ska man börja om while loopen och om man ska sätta in mer pengar ska man hoppa till nästa while loop.

så, hur börjar jag om loopen? skulle vilja klistra in min tråd men iom skolgrej låter jag bli

min tanke var att jag låter variabeln som while loopen startas av ändras, men det går juinte att ändra till samma värde som det redan är ;P
__________________
Senast redigerad av DrillBitTTT 2022-06-28 kl. 21:22.
Citera
2022-06-28, 21:31
  #2
Medlem
Det är enklare för oss att hjälpa till om du klistrar in koden så man kan kika.
Citera
2022-06-28, 21:31
  #3
Medlem
testa break/continue.

https://www.w3schools.com/cpp/cpp_break.asp
Citera
2022-06-28, 21:37
  #4
Medlem
nedboys avatar
Är det enligt krav som du har dessa 4 while loopar? Det låter lite knepigt strukturerat som du skriver.

Du får nog ge lite strukturkod för att förklara vad du gör. Du kan ge lite pseudokod kanske?

Men annars så går while-loopen tills den inte uppfyller kravet för att köra. Blir varken lättare eller svårare rent logiskt.
Citera
2022-06-28, 21:45
  #5
Medlem
Citat:
Ursprungligen postat av nedboy
Är det enligt krav som du har dessa 4 while loopar? Det låter lite knepigt strukturerat som du skriver.

Du får nog ge lite strukturkod för att förklara vad du gör. Du kan ge lite pseudokod kanske?

Men annars så går while-loopen tills den inte uppfyller kravet för att köra. Blir varken lättare eller svårare rent logiskt.
jag frågade om det var ok och det var det tydligen, så länge det funkade. jag började direkt att jobba på uppgiften, jag läste python för ett år sen så ah.

ungefär såhär är min struktur
------------------------------------------------------------------

while i=standby:
vill du spela? hur mycket vill du sätta in på kontot?

while i=play:
hur mycket vill du satsa - vad vill du satsa på - du vann/ du förlorade. vill du spela igen, ta ut eller sätta in pengar?

while i=deposit:
hur mycket vill du sätta in?

while i=withdraw:
tar ut pengar och avslutar spel. dvs börjar om från i=standby

----------------------------------------------------------

ungefär såhär har jag gjort strukturen. det är alltså i=play jag vill börja om när man satsar mer pengar än vad man har på kontot. men får inte till det. när i=play är klar börjar den om, OM man väljer det, men då gör man valet i slutet, dvs i=play, deposit eller withdraw är det sista man väljer, och då går det bra att göra så.

jag funderar om man ska kastas in i en ytterliggare while loop om man anger för stor satsning. typ i=poor, där man får tillsägelse om att man satsat för mycket och får välja om man vill satsa igen dvs i=play eller sätta in dvs i=deposit
Citera
2022-06-28, 21:56
  #6
Medlem
Citat:
Ursprungligen postat av nedboy
Är det enligt krav som du har dessa 4 while loopar? Det låter lite knepigt strukturerat som du skriver.

Du får nog ge lite strukturkod för att förklara vad du gör. Du kan ge lite pseudokod kanske?

Men annars så går while-loopen tills den inte uppfyller kravet för att köra. Blir varken lättare eller svårare rent logiskt.
jag vill alltså börja om while loopen från mitten av while loopen, eller hur jag ska förklara det
Citera
2022-06-28, 22:08
  #7
Medlem
SvenHelsings avatar
Citat:
Ursprungligen postat av DrillBitTTT
jag vill alltså börja om while loopen från mitten av while loopen, eller hur jag ska förklara det
Du har ju fått en länk av gfX7Q
Citera
2022-06-28, 22:14
  #8
Medlem
Citat:
Ursprungligen postat av SvenHelsing
Du har ju fått en länk av gfX7Q
men den börjar väl inte om hela loopen (tänk att for är while i koden nedan) utan skippar bara så man kommer till nästa iteration?

for (int i = 0; i < 10; i++) {
if (i == 4) {
continue;
}
cout << i << "\n";
}


alltså, tänk dig att jag använder continue i en if sats inuti en while loop och att jag efter if satsen har en text som skrivs ut. om jag använder continue kommer jag hoppa till nästa iteration (dvs tillbaka till det som kommer efter "if" steget i while loopen) och ändå skriva ut texten i slutet av while loopen väl?
Citera
2022-06-28, 22:43
  #9
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av DrillBitTTT
men den börjar väl inte om hela loopen (tänk att for är while i koden nedan) utan skippar bara så man kommer till nästa iteration?

for (int i = 0; i < 10; i++) {
if (i == 4) {
continue;
}
cout << i << "\n";
}


alltså, tänk dig att jag använder continue i en if sats inuti en while loop och att jag efter if satsen har en text som skrivs ut. om jag använder continue kommer jag hoppa till nästa iteration (dvs tillbaka till det som kommer efter "if" steget i while loopen) och ändå skriva ut texten i slutet av while loopen väl?

Två fulsätt:

1) Kapsla in resten av while-loopen (efter det ställe som du vill kunna hoppa över resten) i en if-sats.

Kod:
while (condition){
  // dostuff
  if (!other_condition).  // det här motsvarar if (other_condition) continue;
  {
     //do rest of stuff
  }
 
}

2) Använd Goto (scorn upon among coders)

Kod:
while (condition){
  // dostuff
  if (other_condition) 
     goto endloop;  // det här motsvarar if (other_condition) continue;
  //do rest of stuff
  endloop:
    ; // tom rad om du inte vill ha några åtgärder som alltid körs
  }
__________________
Senast redigerad av Enterprise 2022-06-28 kl. 22:52.
Citera
2022-06-28, 23:43
  #10
Medlem
yiys avatar
det är väl bara att göra:
Kod:
while( i == deposit ) {
while( !isnumber( bet ) || bet < 1 || bet > balance )  {
print( "hur mycket vill du spela? minst 1 max " + balance );
bet = readline();
}
}

jag kan inte c++ så vet inte syntaxen
Citera
2022-07-24, 01:05
  #11
Medlem
JohannesSnajdares avatar
kasta en exception som fångas i den yttersta loopen och som startar om allt
Citera
2022-07-24, 21:06
  #12
Medlem
Citat:
Ursprungligen postat av JohannesSnajdare
kasta en exception som fångas i den yttersta loopen och som startar om allt

Tycker dock att exception som betyder undantag ska verkligen vara ett undantag,
alltså något exceptionellt har hänt.
Och i de flesta fall innebär att programmet termineras direkt.

Om man hoppar tillbaks till de tidiga specs för C++ så var en exception något som är betydligt mera användbart än C 's globala variabel errno.
En exception ska i C++ bland annat göra viss uppstädning, dvs deallokera lokala variabler,
och "unwinda" scopet för en del andra variabler,
plus till exempel att anropa destruktorerna för allokerade objekt mm.

Errno i C hade alltså den typiska nackdelen att man inte kunde städa upp efter sig ordentligt.
Vilket för vissa program kunde bli problematiskt genom att filer inte stängdes korrekt eller tex redirection av filerna inte fungerade. Till exempel stdin , stdout, stdprn, stddbg med flera...

En exception är inget som hör till normal programbyggnad. Man brukar istället om man har flera loopar inne i varandra använda olika flaggor, tex en flagga för varje loop. En flagga är en bool och
som är antingen false eller true.

TS syntax är fel, man skriver inte
while i=deposit:
utan
while (i == deposit)
__________________
Senast redigerad av NegerStryparen 2022-07-24 kl. 21:08.
Citera
  • 1
  • 2

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback