我正在尝试创建一个函数,它将输出所有可能的字母组合,与辅音和元音交替。它应输出:
辅音+元音+辅音+元音+辅音+元音 - 或 - 巴巴巴......
我有前两个字母输出正确,但我坚持添加更多。我的问题是在下面的内容之后放置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;
}
}
}
答案 0 :(得分:1)
就像几乎令人惊讶的“生成所有组合”类型的问题一样,这可以通过计算来解决。
从几个字符串开始,从数字转换为字符表示:
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";
}