我正在开发一个打印随机德语单词的程序,然后用户输入数字,如果正确,它会增加一个分数,否则它什么都不做。我仍然是一个初学者,所以它只是很多 if 语句,有没有一种方法可以让我只拥有一个具有最少数字的函数,然后计算机将它们随机组合在一起,同时还能从错误的答案中分辨出正确的答案?
我怎样才能制作一个随机的德语单词生成器,而不必为每个数字都做一个 if 语句?
~编辑1
start:
string zero = "Null", one = "Eins", two = "Zwei", three = "Drei", four = "Vier", five = "Funf";
int ans, score = 0;
srand(time(0));
int x = rand() % 5;
if (x == 0)
{
cout << zero;
cin>>ans
if (ans == 0)
{
score = score + 1;
goto start;
}
else
goto start;
}
if (x == 1)
{
cout << one;
goto start;
}
我尝试这样做的方法是将最少数量的数字放在某处,然后计算机将一组数字拉出并打印出来,然后用户输入数字,如果他们正确,他们的分数就会增加。
例如
-输出:hundertsechsundzwanzig
-输入:126
正确
与我知道的其他语言不同,德语中数字的组合方式有一些逻辑。例如“sechs und dreißig”、“sechs und zwanzig”等。很像英文的“thirty6”和“twenty6”,只是数字的顺序有点不同。
这意味着您可以通过使用三个随机数(每个在0
和之间9
)并将它们每个用作三个数组的索引来轻松解决您的问题。也许是这样的:
std::string const hundreds[10] = {
"",
"hundert",
"zweihundert",
// etc...
};
std::string const tens[10] = {
"",
"", // Special case for the tens
"und swanzig",
"und dreißig",
// etc...
}
std::string const ones[10] = {
"null",
"ein",
"zwei",
// etc...
};
unsigned hundred_digit = get_random_number_between_0_and_9();
unsigned ten_digit = get_random_number_between_0_and_9();
unsigned one_digit = get_random_number_between_0_and_9();
std::string number = hundreds[hundred_digit] + ' ' + ones[one_digit] + ' ' + tens[ten_digit];
正如上面的评论中提到的,如果ten_digit
是,1
那么你需要一些特殊的处理。不过还是可以用数组解决。one_digit
零的特殊情况以及其他极端情况也很有用。但希望你能掌握这一切的一般要点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句