dumt spørgsmål med while

Tags:    c++

hej jeg har fat i en begynder bog til c++, og jeg har fået stillet en lille opgave med at få et simpelt gætte program til at køre hele tiden indtil at det er det rigtige svar, det skal være med en while løkke men den stopper bare når jeg har skrevet et tal. i det jeg har lavet her burde der være 10 chancer

Fold kodeboks ind/udKode 




Der er flere problemer.

Først:
int np = 10;
while(np > 10)

Den vil aldrig komme ind i løkken, da np ikke er større end 10.
Det skal nok være:
while(np > 0)

Dernæst bliver np aldrig talt ned, "np-1" gør ikke noget, det skal være
np--;

"np - 1" udføres kun hvis der gættes rigtigt, flyt det ud af if(...)

Hvis man gætter rigtigt fortsætter den bare

Der bliver kun spurgt om alder én gang, flyt disse linier ind i while loopen:

cout<< "indtast din alder"<<endl;
cin>> nguess;





min while løkke er nu

Fold kodeboks ind/udKode 


men nu siger den at der mangler et ";" ved else if og else, hvordan kan det være jeg syntes ikke det mangler nogle steder



Du kan ikke have np--; inde mellem de if() {} else ...

Flyt den ned efter den sidste else eller før den første if



mange tak så virker det, men selvom det er rigtigt bliver den bare ved, kan man ændre det?




Ja, man kan godt lave det om, det letteste er at:

if(nguess == nage)
{
cout<<"rigtigt :D"<<endl;
system("pause");
return 0;
}
Så vil programmet afslutte efter det har skrevet at der er svaret rigtigt.
Du kan også lave en while loop rundt om det hele for at starte forfra.

I øvrigt var det nok mere logisk at lave din while loop som en for loop...



hmm ja det er rigtigt men opgaven var at det skulle være en while loop ;) men mange tak for hjælpen nu virker det hele som det skal



hmm ja det er rigtigt men opgaven var at det skulle være en while loop ;) men mange tak for hjælpen nu virker det hele som det skal


Sådan her med et while-loop! Loop invarianter er faktisk basal kontraktbaseret programmering og det ville hjælpe dig en del at lave en invariant for loop'et for at være sikker på du kommer rigtig ind og ud af det.

Fold kodeboks ind/udKode 


Hth



t