Som besökare på Hamsterpaj samtycker du till användandet av s.k. cookies för att förbättra din upplevelse hos oss. Jag förstår, ta bort denna ruta!
Annons

C++ while-loop hjälp

Skapad av torchi12, 2010-12-06 13:17 i Webbutveckling & Programmering

1 656
10 inlägg
0 poäng
torchi12
Visningsbild
Hjälte 547 inlägg
0
min c++ kod:
Ett stycke c#-kod:

int main()
{

int user_number;

cout
<<"Please pick a number between 1 and 5"
<<endl
<<endl;

cin >> user_number;
while(user_number<1 || user_number >5 || isdigit(user_number)==false)
{
cout <<"I said a number between 1 and 5! =(" <<endl;
cin >> user_number;
}
cout <<"You choose "<<user_number;



system("pause");
return 1;
}


Om man skriver in t.ex. FERGHRH så spammar den
"I said a number bwteen 1 and 5! =("
hela tiden, men jag vill att användaren måste skriva in på nytt

vaaad faaaaan?

Crazy Loop - Crazy Loop

Är reklamen ivägen? Logga in eller registrera dig så försvinner den!

CryptoN
Visningsbild
P 33 Hjälte 528 inlägg
0

Svar till torchi12 [Gå till post]:
Du kontrollerar om isdigit(user_number) == false i din while.

Om den uppfylls till true, så kommer ju while-loopen att upprepas i all oändlighet. Du måste någon gång förändra villkoret.

torchi12
Visningsbild
Hjälte 547 inlägg
Trådskapare
0

Svar till CryptoN [Gå till post]:
Om användaren inte skriver in en siffra mellan 1 och 5 vill jag att det felmedelandet ska skrivas ut och sedan ska användaren få skriva in ett nytt värde.

Hur ska jag då ändra koden så att det blir som jag vill?
Har för mig att jag gjorde likadant på en annan cpp fil och då funkade det o.o(?)

Crazy Loop - Crazy Loop

CryptoN
Visningsbild
P 33 Hjälte 528 inlägg
0

Svar till torchi12 [Gå till post]:
Har du testat att köra en if-sats som kontrollerar inputen av en användare inne i while:en?

torchi12
Visningsbild
Hjälte 547 inlägg
Trådskapare
0

Svar till CryptoN [Gå till post]:
förstår inte riktigt hur du menar,
kan du visa?

Crazy Loop - Crazy Loop

riiga
Visningsbild
Linköping Hjälte 305 inlägg
0

Svar till torchi12 [Gå till post]:
Hoppas att detta funkar. Använder en if-sats istället för while. While är till för upprepningar. If används för att testa villkor.
Ett stycke C#-kod:
int main()
{

int user_number;

cout << "Please pick a number between 1 and 5: " << endl;

cin >> user_number;

if(user_number < 1 || user_number > 5 || isdigit(user_number) == false)
{
cout << "I said a number between 1 and 5! =(" << endl;
cin >> user_number;
}

cout << "You choose: " << user_number << endl;

system("pause");
return 0;
}


Glöm aldrig den 14 maj! Skotten ekar fortfarande...

gaminggirl
Visningsbild
F 38 Lund Hjälte 8 084 inlägg
0
Svar till riiga [Gå till post]:
Ja men han vill ju upprepa det till användaren skrivit in ett tal mellan 1 och 5. Då funkar inte en if-sats. Så ahn vill att den ska vänta på att användaren matar in nya uppgifter och sedan ska han testa det igen i while-satsen.

Ingen status

MisterD
Visningsbild
P Hjälte 3 738 inlägg
0
Kolla min tråd, har skyddat mig från det där genom att ha menyvariabeln som en char istället för int. sedan istället för:
if(user_number < 1 || user_number > 5 || isdigit(user_number) == false)

kör du
if(user_number < 49 || user_number > 53 || isdigit(user_number) == false)

eftersom 49 är 1 i asciitabellen och 53 är 5.

Tillägg av MisterD 2010-12-20 12:19

fast bättre är '1' istället för 49 osv.

Ingen status

west_west
Visningsbild
P 33 Rimforsa Hjälte 375 inlägg
0

Svar till torchi12 [Gå till post]:
Det enklaste torde väl vara att ha frågan i while-loopen och en getUserInput-mojäng. När man fått rätt input så kommer ju programmet gå vidare. Principen blir alltså

while(!correct){
printQuestion()
getuserinput()
}

Typ.

Jag behöver inga flashiga bilder eller copy-paste:ade resonemang för att visa att jag har rätt.

robbalainen
Visningsbild
P Hjälte 828 inlägg
0
Svar till torchi12 [Gå till post]:
Jag tänker mig något i stil med följande; men då är det bara jag som gillar endless loops från all embeddedkör. Felsäkert, är det iallafall. Snyggt är det inte. :)


Tillägg av robbalainen 2011-01-07 01:05

Nehe - fick själv en fin loop.. felsökning inc!



Tillägg av robbalainen 2011-01-07 22:04

Det fick bli såhär tillslut! Verkar funka, men garanterar ingenting..

Ett stycke c#-kod:

#include <iostream>
using namespace std;
int main()
{
int a;
cout << "Please pick a number between 1 and 5" << endl;
cin >> a;
if(a < 1 || a > 5){
while(true){
if(!cin){
cin.clear();
cin.ignore();
}
cout << "I said a number between 1 and 5! =( " << endl;
cin >> a;
if(a >= 1 && a <= 5)
break;
}
}
cout <<"You chose: "<< a << endl;

system("pause");
return 0;
}

Ich ist eine Tore!


Forum » Datorer & IT » Webbutveckling & Programmering » C++ while-loop hjälp

Ansvariga ordningsvakter:

Användare som läser i den här tråden just nu

1 utloggad

Skriv ett nytt inlägg

Hej! Innan du skriver om ett potentiellt problem så vill vi påminna dig om att du faktiskt inte är ensam. Du är inte onormal och världen kommer inte att gå under, vi lovar! Så slappna av och gilla livet i några minuter - känns det fortfarande hemskt? Skriv gärna ner dina tankar och frågor, vi älskar att hjälpa just dig!

Den här tråden är äldre än Rojks drömtjej!

Det senaste inlägget i den här tråden skrevs för över tre månader sedan. Är du säker på att du vill återuppliva diskussionen? Har du något vettigt att tillföra eller passar din fråga i en ny tråd? Onödiga återupplivningar kommer att låsas så tänk efter en extra gång!

Hjälp

Det här är en hjälpruta

Här får du korta tips och förklaringar om forumet. Välj kapitel i rullningslisten här ovanför.

Rutan uppdateras automagiskt

När du använder funktioner i forumet så visas bra tips här.


Annons
Annons
Annons
Annons