我正在尝试创建一个函数,该函数将输出所有可能的字母组合,并辅以辅音和元音。它应该输出:

辅音+元音+辅音+元音+辅音+元音-或-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/

10-11 19:37
查看更多