【发布时间】:2014-12-12 04:17:34
【问题描述】:
我正在编写一个程序来打乱通过字符串读入的行。这些短语是:
交替的内角
勾股定理
直角三角形
底角
边角边
我想打乱每个单独的单词,而不是整个短语,而是让每个短语单独一行(使用 getline 函数)。在每个短语之后,我将输出与短语长度相对应的下划线,每个下划线之间有空格,下划线后的双空格对应短语中单词的最后一个字母。
我要单独打乱单词的功能:
void scramble (apstring w)
{
srand (time(NULL));
apstring orig = w;
for(int i=0; i<w.length(); i++)
{
int newSpot=rand()%w.length();
char temp = w[i];
w[i]=w[newSpot];
w[newSpot]=temp;
}
while (orig == w);
我想知道如何在每一行中搜索
之后的空格 getline(fin, phrase);
并通过扰码器单独发送每个单词,但在输出的短语中输出正确的间距,以及单词后正确数量的下划线。我想我需要将单词读入子字符串,并可能使用以下内容“清除”字符串:
apstring purgeString(apstring word)
{
apstring newWord = "";
for (int i = 0; i < word.length(); i++)
{
if (isalpha(word[i]))
newWord += word[i];
}
return newWord;
}
任何帮助或建议都将不胜感激,这已经困扰了我一段时间了。
【问题讨论】:
-
附注:您应该只在程序运行开始时调用 srand(time(NULL)) 一次,而不是在 scramble() 内部。否则,每次调用 scramble() 时,您可能会得到相同的随机值序列(假设您的程序在不到一秒的时间内完成)。