2016-05-04 17 views
0

Ich versuche, Hash-Tabellen und Hash-Methoden (wie Division und Multiplikation) zu verstehen, und ich frage mich, wie man eine Rotationsmethode implementieren, wenn Schlüssel seriell sind. Angenommen, ich hätte eine Funktion namens int rotation(int value) und ich hätte eine ganze Zahl wie int test = 123456, und ich wollte das Ergebnis 612345 erhalten. Was wäre der beste Weg, dies universell zu implementieren (sagen wir mal mit einer Textdatei von 1000 Integer-Gruppen)?Was ist der beste Weg, um eine Hash-Rotation-Methode in C++ zu implementieren?

Antwort

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; 
} 

Dies wird Ihre Zahlen entsprechend ihrer Anzahl von Chiffren (123 erhält 312, 1234 erhält 4123) drehen.

Für die Datei ist Teil: Sie würde es öffnen müssen, um die Werte lesen, wandeln sie die Funktion int und rufen:

::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(); 
} 
Verwandte Themen