我正在尝试创建一个函数,该函数将输出所有可能的字母组合,并辅以辅音和元音。它应该输出:
辅音+元音+辅音+元音+辅音+元音-或-bababa ...
我的前两个字母输出正确,但是我坚持添加更多。我的问题是在下面的内容后面放置for循环。
我现在只是在控制台上进行测试(以进行测试),但是一旦运行,我将其输出到文件中以供以后参考。
void createWord(char consonants[], char vowels[])
{
//CLENGTH = 21, and VLENGTH = 5, with consonants[] as a cstring with all
consonants, and vowels[] as a cstring with all vowels.
int i, j;
for (i = 0; i < CLENGTH; i++)
{
for (j = 0; j<VLENGTH; j++)
{
cout << consonants[i] << vowels[j] ;
cout << endl;
}
}
}
最佳答案
就像几乎令人惊讶的“生成所有组合”类型的问题一样,这可以通过计算来解决。
从几个字符串开始,从数字转换为字符表示形式:
char const *consonants[] = "bcdfghjklmnpqrstvwxyz";
char const *vowels[] = "aeiou";
我们可以计数,并使用数字的正确部分作为数组的索引:
// I'll arbitrarily pick 10000 as the number to print out.
for (size_t i=0; i<10000; i++) {
size_t digit_0 = i % 21;
i /= 21;
size_t digit_1 = i % 5;
i /= 5;
size_t digit_2 = i % 21;
i /= 21;
size_t digit_3 = i % 5;
std::cout << consonants[digit_0]
<< vowels[digit_1]
<< consonants[digit_2]
<< vowels[digit_3]
<< "\n";
}
关于c++ - 在C++中生成字母组合的函数的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17583901/