Något går fel (kort program)
Hej, något går väldigt fel när jag ska köra programmet...Kan någon se vad jag gjort för fel?
#include <iostream>
using namespace std;
int main(int argc, const char * argv[])
{
float hemlig;
float gissa;
int räknare = 0;
int maxAntal = 4;
bool ingagissn = false;
cout << "Spelare 1: välj ett hemligt nummer mellan 1 och 100..." << endl;
cin >> hemlig;
while(hemlig != gissa && !ingagissn )
{
if(maxAntal > räknare)
{
cout << "\n\n\n\n\nSpelare 2: Skriv in din gissning: " << endl;
cin >> gissa;
räknare++;
cout << "Du har: " << maxAntal-- << " gissningar kvar..." << endl;
}
else
{
ingagissn = true;
cout << "Spelare 1 vann!" << endl;
}
}
if(ingagissn)
{
cout << " du förlorade" << endl;
}
else {
cout << "\nDet är helt rätt!" << endl;
}
return 0;
}
Vad händer?
Det tycks saknas något:
if (gissa == hemlig) break;
Testade det och samma fel uppstår.......
Detta händer:
Spelare 2: Skriv in din gissning:
3
Du har: 3 gissningar kvar...
Spelare 1 vann!
du förlorade
Program ended with exit code: 0
allt skrivs ihop^^
Vad var det hemliga talet?
kommer inte ihåg men istället för att skriva ut som den borde så skrivs allt ut på en gång och avslutas.
Två förslag: 1) stoppa in utskrifter här och där som visar värdet på intressanta variabler
2) använd en debugger och kör en rad i taget
Jag har en liten aning. Kan du visa hela in- och utmatningen från en körning?
Ibland kan det vara problem med att använda åäö i variabelnamn
Felet ligger i dessa två rader:
räknare++;
cout << "Du har: " << maxAntal-- << " gissningar kvar..." << endl;
Här ökar du räknare och sedan minskar du maxAntal vid utskrift vilket gör att när maxantal är tre som skrivs ut i exemplet är räknare 1. Sedan ökar du räknare och minskar maxAntal vilket gör att båda blir 2 och if-satsen if(maxAntal > räknare) går till else nästa gång.