我正在尝试理解哈希表和哈希方法(例如除法和乘法),我想知道如何在键是串行时实现旋转方法。假设我有一个名为int rotation(int value)
的函数,我有一个像int test = 123456
这样的整数,我想得到结果612345.什么是普遍实现这个的最佳方法(比如说文本文件是1000个整数组)?
答案 0 :(得分:1)
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,334得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();
}