2014-02-09 62 views
0
// direction generator 
static const char alpha[] = "DLP"; 
int d; 
char genRandom() 
{ 
    return alpha[rand() % d +1]; 
} 
// end of generator 

while(true) 
{ 
    cout << genRandom(); 
} 

它应该生成d字符。例如:根据输入号码生成字符

输入d:随机生成的

7 

输出:

PDLDPLP 

并即时得到无限数量的字符串,程序犯规止步于7它源源不绝,永远。

+0

你什么时候灌输的值'D'? –

回答

3

它永远运行,因为您使用while(true)

您可以使用计数器代替,当达到您需要的数量时停止。

for (int counter=0; counter<d; counter++) 
{ 
    cout << genRandom(); 
} 

编辑:而你需要解决您的genRandom()d>2将获得超出范围的误差。

尝试改变

return alpha[rand() % d +1]; 

return alpha[rand() % strlen(alpha)]; 
+0

现在我得到未申报'柜台' – frank17

+0

@ferii查看更新的答案。 – herohuyongtao

+0

谢谢你,现在工作:)) – frank17

0

正如herohuyongtao说,你正在使用while(true)

尝试这样的事情,而不是:

char GetRandomChar(){ 
    char differentCharacters[] = {'a', 'b', 'c'} 
    int numOfCharacters = 3; 
    return differentCharacters[rand() % numOfCharacters ]; 
} 

int main(){ 
    int n; 
    int numChars = 0; 
    std::cin >> n; 
    while(numChars++ < n){ 
     std::cout << GetRandomChar(); 
    } 
} 
相关问题