0

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

辅音 + 元音 + 辅音 + 元音 + 辅音 + 元音 --or-- 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;
    }
}

}
4

1 回答 1

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";
}
于 2013-07-11T02:15:52.653 回答