Behöver hjälp med c++!|Programmering / Grafisk formgivning|Forum|Nordichardware

Search
Forum Scope


Match



Forum Options



Minimum search word length is 3 characters - maximum search word length is 84 characters
Lost password?
The forums are currently locked and only available for read only access
sp_Feed sp_TopicIcon
Behöver hjälp med c++!
Zmozie
Almost a full-blooded keyboard-warrior
Medlem
Forum Posts: 204
Member Since:
April 20, 2005
sp_UserOfflineSmall Offline
1
October 15, 2005 - 11:25 am
sp_Permalink sp_Print

Har fått en laboration i skolan där man ska göra ett blackjack spel.
Jag har nästan gjort klart spelet nu, men behöver fixa så att när man ska satsa pengar ska man kunna skriva fel utan att programmet börjar loopa.
Det funkar att satsa olika valutor, men om man skriver in en bokstav så börjar programmet loopa. Någon som vet hur man gör för att fixa detta?
Här är den del av koden där inmatningen sker:

double satsa, kredit = 100;

do{
cout << "Du satsar $";
cin >> satsa;

if (satsa < 1)
cout << "Du satsade inga pengar!n";
else if (satsa > kredit)
cout << "Du har inte sx86 mycket pengar!n";
}while(satsa < 1 || satsa > kredit);

Tacksam för hjälp!

squarepusher
Member
Medlem
Forum Posts: 2154
Member Since:
May 29, 2001
sp_UserOfflineSmall Offline
963968
October 15, 2005 - 6:04 pm
sp_Permalink sp_Print

Du måste lägga in någon felhantering som kollar om det som matas in är siffror eller inte, kanske finns någon funktion typ isnumerical?

Zmozie
Almost a full-blooded keyboard-warrior
Medlem
Forum Posts: 204
Member Since:
April 20, 2005
sp_UserOfflineSmall Offline
964146
October 16, 2005 - 8:20 am
sp_Permalink sp_Print

Okej, men problemet är att det inte finns något sånt i min programmeringsbok. Är det någon som vet någon sida där man kan hitta sånt?

Avatar
dae
Kommer du hit ofta?
Medlem
Forum Posts: 410
Member Since:
July 28, 2003
sp_UserOfflineSmall Offline
964350
October 16, 2005 - 3:19 pm
sp_Permalink sp_Print

Problemet är att cin inte är så bra på att hantera inmatning av nummer direkt. När du matar in något annat än en siffra kommer cin gå in i ett "fail state". Du kan inte läsa in något mer förrän du har "nollställt" cin ('cin >> satsa;' kommer returnera direkt utan att läsa in något, därav loopen). Men det räcker inte med det, du måste också bli av med tecknet/tecknen som inte är siffror, eftersom de fortfarande finns kvar.

Alltså, efter "cin >> satsa;" bör du göra något i stil med:

if (!cin) {
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), 'n');
}

Det hela är ganska bra beskrivet här:
http://www.augustcouncil.com/~.....otips.html

Personligen tycker jag det hela är ganska fult och skulle rekommendera att du läser in nummer på något annat sätt. Jag vet dock att detta är standardsättet som beskrivs i böcker, lite synd eftersom man då förr eller senare åker på problem som detta.

Zmozie
Almost a full-blooded keyboard-warrior
Medlem
Forum Posts: 204
Member Since:
April 20, 2005
sp_UserOfflineSmall Offline
964376
October 16, 2005 - 4:35 pm
sp_Permalink sp_Print

Okej, tack så mycket!
Ska testa och se ifall det fungerar.

dae wrote: Personligen tycker jag det hela är ganska fult och skulle rekommendera att du läser in nummer på något annat sätt. Jag vet dock att detta är standardsättet som beskrivs i böcker, lite synd eftersom man då förr eller senare åker på problem som detta.

Vad finns det för andra sätt som man kan mata in nummer på?

Forum Timezone: Europe/Stockholm
Most Users Ever Online: 694
Currently Online:
Guest(s) 32
Currently Browsing this Page:
1 Guest(s)
Top Posters:
Andreas Galistel: 16287
Jonas Klar: 15897
ilg@dd: 10810
Nyhet: 10607
Mind: 10550
Ctrl: 10355
Gueno: 9881
Guest: 9344
Snorch: 8881
Callister: 8468
Newest Members:
PetrbonFU PetrbonFU
Karine Bembry
Dolores Mcdaniels
Anibal McLeish
Francisca Alt
Alfie Everhart
Lester Huitt
Orlando Jorgensen
Mikki Lundgren
Dakota Kozlowski
Forum Stats:
Groups: 11
Forums: 59
Topics: 146630
Posts: 1300967

 

Member Stats:
Guest Posters: 2
Members: 79425
Moderators: 0
Admins: 11
Administrators: nordicadmin, Henrik Berntsson, Anton Karmehed, Carl Holmberg, Joel Oscarsson, Mikael Linnér, Mikael Schwartz, Andreas Paulsson, Nickebjrk, Mattias Pettersson, EmxL