我正在尝试用C ++制作的猜谜游戏遇到错误。这是以下结构:
问题在于增加,而不是增加。我创建了带有do语句并包含条件的while循环。但是我在其他有关堆栈溢出的文章中有所介绍,但是由于我是一个初学者,并且真的进入c ++,因此我很难在代码中实现它。
示例文章: Program to figure out number between 1 and 100 won't ever guess "100" because of rounding
// Zagros
//Roulette
// Grundläggande c++ programmering
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
bool error = true;
string namn = "";
int nummer;
int points;
int tries = 0;
int main()
{
cout << "Välkommen till gissa tal" << endl;
cout << "vad är ditt namn?" << endl;
cin >> namn;
cout << "Välkommen \t" << namn << endl;
cout << "Följande instruktioner är:" << endl
<< "(1)Du inskriver ett tal och sedan slumpas ett ovetande tal"
<< " och jämför om ditt tal är korrekt med det tal som slumpas."
<< endl
<< " Om det slumpade tal på första försök, blir rätt. Får du 10 "
<< "poäng, blir talet rätt på andra eller tredje försöker får du"
<< " 5 poäng. Om talet blir rätt under 10 försök så får du 1 poäng"
<< endl;
cout << "Du har sedan alternativet att vinna kvitt eller dubbelt,,"
<< " vilket programmet generar 5 tal. Du har då ett försök att"
<< " gissa rätt tal av de 5 talen vid rätt gissning får du"
<< " dubbla poäng, vid fel gissning får du de kvarstående poängen du har"
<< endl;
while (error)
{
do
{
cout << "Vänligen skriv in ett nummer" << endl;
cin >> nummer;
if (nummer <= 50)
{
cout << "Tack för ditt nummer \t"
<< "Du valde följande nummer"
<< endl
<< nummer
<< endl;
error = false;
} else if (nummer > 50)
{
cout << endl
<< "vänligen skriv in ett korrekt nummer" << endl;
error = true;
}
} while(error);
}
// algorithm starting
srand( (unsigned int)time(NULL));
cout << "kommer slumpa nu" << endl;
int slump = (rand() % 50) + 1;
if (slump != nummer)
{
cout << "tyvärr blev det inte rätt" << endl;
cout << slump << endl;
tries = 0;
cout << "number of tries" << tries << endl;
error = true;
} else if(slump == nummer)
{
cout << "det blev helt rätt" << endl;
tries = 0;
error = false;
}
while(true);
while(error);
}
答案 0 :(得分:1)
几个问题。
cin >> namn
不起作用,因为namn是一个字符串。除非您包含头文件#include <sring>
即使这样,cin
也无法识别字符串中的多个单词。更好的方法是使用
getline(cin, namn);
您有while循环,该循环在代码中没有执行任何操作,最终将迫使您陷入无限循环。
else if (slump == nummer)
{
cout << "det blev helt rätt" << endl;
tries = 0;
error = false;
}** while (true);** //what does this do? this will eventually halt the program in infinite loop
最后一次while循环与上述相同,将迫使您进入无限循环。
while (error);
如果使用调试器并搜索收到的错误消息,则可以识别所有这些问题。我强烈建议您开始这样做。您将获得更快的结果。