基于ai + b mod n的交换函数

时间:2014-04-24 01:44:45

标签: c++ c++11

我需要一个交换函数,根据计算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;
}

1 个答案:

答案 0 :(得分:0)

创建第二个字符串,长度与第一个字符串相同,并将第一个字符串的第(ai + b)个字符复制到输出的第i个位置。

请记住,C ++从0开始计数。