【发布时间】:2020-08-27 09:19:36
【问题描述】:
我必须做这个练习:
对学童的常见惩罚是多次写出同一个句子。编写一个 C++ 独立程序,将下面这句话写一百遍:“我将永远使用面向对象设计。”你的程序应该给每个句子编号,并且它应该“不小心”在列表中的不同位置出现八个不同的随机拼写错误,这样看起来就像是人类手动输入的一样。
我的知识仅限于 C 随机数。我试过这个没有成功。我不能得到8个错误。正如我们所看到的,我收到“错字”的随机错误。
这是我的错误代码:
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
string strPunish = "I will always use objectoriented design.";
int randFrom = 1;
int randTo = 100;
int typoCounter = 0;
srand(time(NULL));
int randNumber = randFrom + ( std::rand() % ( randTo - randFrom + 1 ) );
for (int i = 1; i <= 100; i++)
{
if ((i == randNumber) && (typoCounter != 8))
{
randFrom = i;
randNumber = randFrom + ( std::rand() % ( randTo - randFrom + 1 ) );
string strTypo = strPunish;
int randTypo = 0 + ( std::rand() % ( strTypo.length() - 0 + 1 ) );
strTypo.insert(randTypo, "TYPO");
cout << i << ": " << strTypo << endl;
typoCounter++;
}
else
cout << i << ": " << strPunish << endl;
}
return EXIT_SUCCESS;
}
【问题讨论】:
-
建议:通过生成以最大行数为界的 8 个随机数,随机预先确定哪些行会因拼写错误而损坏。如果您随意选择行,您可能会将错误偏向列表的开头,或者在损坏所有 8 行之前用完行。
-
using namespace std;- 检查这个:stackoverflow.com/questions/1452721/… -
不再使用“使用命名空间”。
-
我想知道。如果我们每场演出 100/4 = 25 行。然后我们随机选择这 25 行,然后是接下来的 25 行,依此类推……这样好吗?
-
你要做的是在做任何事情之前随机选择8行。您的范围是 0-99,您可以从该范围中选择 8 个随机数。然后您进行打印,并在遇到预定的行时生成错字。