Pour la plupart de vos entrées, les 'chiffres' les plus à gauche semblent changer le plus rapidement, jusqu'à ce que vous arriviez à la transition 12-> 13, où le milieu chiffres changements les plus lents:
1A
2A
3A
...
2AA
3AA
1AB
2AB
...
Ceci est certainement difficile et exigera probablement beaucoup d'effort supplémentaire au code d'un système où le droit le plus ou le plus à gauche chiffres change le plus rapide est strictement suivi:
1A
2A
3A
...
2AA
3AA
1BA
2BA
...
ou
1
2
3
a
b
c
11
12
13
1a
1b
1c
21
22
23
...
Si vous devez suivre exactement le schéma que vous avez donné ici, alors je vous recommande une recherche-table et hardcode simplement ce schéma dans votre source:
#include <stdio.h>
int main(int argc, char* argv[]) {
char table[][5]={"ZERO", "1A", "2A", "3A", "1B", "2B", "3B", "1C", "2C", "3C",
"1AA", "2AA", "3AA", "1AB", "2AB", "3AB", "1AC", "2AC", "3AC"};
int i;
for (i=1; i<argc; i++) {
int input=atoi(argv[i]);
printf("%d\t%s\n", input, table[input]);
}
return 0;
}
Veuillez ne pas utiliser ce code directement - je n'ai pas fait aucune validation d'entrée ou vérification des limites de tableau. Bien sûr, j'espère que vous choisirez une approche totalement différente - cette simple substitution de mot de code fonctionne bien pour un nombre spécifique d'entrées, mais un jour quelqu'un pourrait vouloir entrer un nombre plus grand que celui que vous avez dans votre tableau. (Dans ce cas, quand quelqu'un veut convertir 19
, il échouera.)
Une approche plus générique, converting between bases, est un algorithme de conversion entre deux bases de nombres quelconques. Dans votre cas, il pourrait convertira en base 6 avec les chiffres 1
, 2
, 3
, A
, B
, C
(si vous adhérez strictement soit un plus à gauche change le plus rapide ou le plus à droite change approche la plus rapide).
Merci Wooble, pour répondre à ce que ce n'est pas. Très utile. – jfbomber