【发布时间】:2016-05-05 06:05:23
【问题描述】:
我正在尝试了解哈希表和哈希方法(例如除法和乘法),并且想知道当键是串行时如何实现轮换方法。假设我有一个名为 int rotation(int value) 的函数,我有一个像 int test = 123456 这样的整数,我想得到结果 612345。什么是普遍实现它的最佳方法(假设使用 1000 个整数组的文本文件) ?
【问题讨论】:
我正在尝试了解哈希表和哈希方法(例如除法和乘法),并且想知道当键是串行时如何实现轮换方法。假设我有一个名为 int rotation(int value) 的函数,我有一个像 int test = 123456 这样的整数,我想得到结果 612345。什么是普遍实现它的最佳方法(假设使用 1000 个整数组的文本文件) ?
【问题讨论】:
int rotate(int value)
{
bool isNegative = value < 0;
if(isNegative)
value = -value;
int v = value % 10;
value /= 10;
while(v < value)
v *= 10;
value += v;
return isNegative ? -value : value;
}
这将根据密码数轮换您的数字(123 得到 312,1234 得到 4123)。
对于文件部分:您必须打开它,读取值,将它们转换为 int 并调用函数:
::std::ifstream in("filename");
if(in.fail())
{
// error
}
else
{
int n;
for(;;)
{
in >> n;
if(in.eof() || in.fail())
break;
::std::cout << rotate(n) << ::std::endl;
}
in.close();
}
【讨论】: