Étape 8: Le Code : Rotors
const char rI [26] = {"E",
« K »,
SUIS ',
« F »,
« L »,
« G »,
A ',
« Q »,
« V »,
« Z »,
' N ',
' T ',
' O ',
« W »,
« Y »,
« H »,
« X »,
« U »,
LES DE ',
« P »,
« A »,
« Je »,
« B »,
« R »,
« C »,
'J'};
const char rII [26] = {"A",
« J »,
A ',
« K »,
LES DE ',
« Je »,
« R »,
« U »,
« X »,
« B »,
« L »,
« H »,
« W »,
' T ',
SUIS ',
« C »,
« Q »,
« G »,
« Z »,
' N ',
« P »,
« Y »,
« F »,
« V »,
' O ',
'E'};
char de rIII [26] = {"B",
A ',
« F »,
« H »,
« J »,
« L »,
« C »,
« P »,
« R »,
' T ',
« X »,
« V »,
« Z »,
' N ',
« Y »,
« E »,
« Je »,
« W »,
« G »,
« A »,
« K »,
SUIS ',
« U »,
LES DE ',
« Q »,
'O'};
Vous pouvez demander « Pourquoi pas seulement les définir sous forme de chaîne, cela ressemble à la main ». En d’autres termes pourquoi ne pas le faire comme ceci :
char de rotI [26] = "" EKMFLGDQVZNTOWYHXUSPAIBRCJ "
Je vais vous avouer ce qui rend pour beaucoup plus de code, mais pour moi il est plus logique visuelle pour le voir vers le bas (je ne peux pas penser un moment que j’ai jamais fait ça avant, mais avec celui-ci, je pense que cela fonctionne). Fondamentalement puisque ce sont des rotors (et je copiais les valeurs hors une machine Enigma de papier) alors c’est ainsi que j’ai choisi de le faire.
En plus de définir les réflecteurs, j’ai défini quel numéro chaque rotor doit tourner le rotor prochain. En d’autres termes, lorsque RI est en position 17, puis le rotor à gauche devrait tourner.
const int spinRI = 17 ;
const int spinRII = 5 ;
const int spinRIII = 22 ;
Parce que les rotors peuvent être mis dans aucune des trois fentes vous voyez à l’écran j’ai copier les valeurs de rotation constante dans ints qui changent à tout moment un rotor différent est mis dans une fente (r1 est la gauche la plupart rotor, r2 est le rotor Centre, r3 est le rotor plus droit).
int spin_r1 = spinRI ;
int spin_r2 = spinRII ;
int spin_r3 = spinRIII ;
Les variables suivantes garder une trace de ce rotor est dans quel emplacement. Ceci est utilisé pour que vous sachiez que lorsque vous modifiez des rotors dans une fente quel rotor ensuite un sera
int cur_r1 = 1 ;
int cur_r2 = 2 ;
int cur_r3 = 3 ;
J’ai également définir le réflecteur. Fondamentalement ce que cela veut dire, c’est si une entrée arrive à la position 3, il devrait revenir à la position 7 par exemple (puisque la valeur en position 3 est 7). Le réflecteur fondamentalement envoie le signal à travers les rotors en sens inverse
réflecteur d’int [26] = {24,
17,
20,
7,
16,
18,
11,
3,
15,
23,
13,
6,
14,
10,
12,
8,
4,
1,
5,
25,
2,
22,
21,
9,
0,
19} ;
Ce sont des espaces réservés pour l’ensemble du rotor dans les positions 1, 2 et 3 sur l’écran
char rotor1 [26] ;
char rotor2 [26] ;
char rotor3 [26] ;
Remarque : L’image de cette étape est de Wikipedia