我需要一个交换函数,根据计算ai + b mod n后得到的结果进行交换
例如,我有一个文字:"TEST"
,我想基于ai+b mod n
进行交换
说我得到一个结果ai+b mod n
为2,4,1,3即交换后我的文本将是“ETTS”我的第一个位置的字母将位于第3位,位置2将是位置1,位置3将是4和4将是2。
以下代码将生成ax+b mod n
的值,需要一些有关如何交换文件中单词的帮助。提前致谢。谢谢
int main ()
{
cout << "Enter values of a and b." << endl;
cin >> a >> b;
cout << "Enter input file name." << endl;
cin >> inputfile;
FILE * pFile;
pFile = fopen (inputfile, "rb");
if (pFile == NULL) perror ("Error opening file");
else
{
fseek (pFile, 0, SEEK_END); // non-portable
sizeoffile = ftell (pFile);
cout << sizeoffile << "\n";
fclose (pFile);
}
n = sizeoffile / 32;
cout << n << endl;
for (i = 1; i <= n; i++)
{
int message1 = ((a * i + b) % n);
int c = message1;
cout << c << endl;
}
return c;
}
答案 0 :(得分:0)
创建第二个字符串,长度与第一个字符串相同,并将第一个字符串的第(ai + b)个字符复制到输出的第i个位置。
请记住,C ++从0开始计数。