Voila, je me présente, exvander, débutant en c++

Mon problème est celui-ci: j'ai un problème qui découle surement du type de variables.
En effet, le compilateur intégré a code::blocks me donne l'erreur suivante

C:\Users\***\Desktop\test code blocks\Nouveau dossier\10 to 16\main.cpp|78|error: 'positon' was not declared in this scope|
||=== Build finished: 1 errors, 0 warnings ===|
le code source est:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <iostream>
#include <string>
#include <math.h>

using namespace std;

int main()
{
    int nb ; //decimal vers hexa
    string tab[15] ; // tableau de conversion avec la valeur vers l'hexa et l'indice pour le decimal
    string hex ; //hexa vers decimal
    string retenue ; //outil de traduction de l'hexa vers le binaire
    int position ; //outil de traduction de l'hexa vers le binaire
    int repnb ; //reponse hexa vers decimal
    string rephex ; //reponse decimal ver hexa
    char choix;
    int puissance(0);
    
    tab[0] = "0";
    tab[1] = "1";
    tab[2] = "2";
    tab[3] = "3";
    tab[4] = "4";
    tab[5] = "5";
    tab[6] = "6";
    tab[7] = "7";
    tab[8] = "8";
    tab[9] = "9";
    tab[10] = "A";
    tab[11] = "B";
    tab[12] = "C";
    tab[13] = "D";
    tab[14] = "E";
    tab[15] = "F";
    
    cout << "1 pour 10-to-16" << endl;
    cout << "2 pour 16-to-10" << endl;
    cout << "0 pour  quitter" << endl;
    cin >> choix;
    
    while (choix != '0') {
        if (choix == '1') {
            rephex = "";
            cout << "veuillez entrer un nombre en decimal = ";
            cin >> nb;
            do {
                rephex = tab[nb%16] + rephex;
                nb = nb/16;
            } while (nb > 0);
            cout << "en hexadecimal cela donne = " << rephex << endl;
        } else {
            repnb = 0;
            retenue = "";
            cout << "veuillez saisir un nombre en hexadecimal";
            cin >> hex;
            do {
                retenue = (hex.substr(hex.size()-1, 1));
                position = 0;
                while (retenue != (tab[position]) && (position <= 15)){
                    position ++;
                }
                if (position >= 16){
                    cout << "erreur, veuillez essayer avec un autre nombre" << endl;
                }
                repnb = repnb + ( positon * pow(16, puissance));
                puissance++;
                hex = hex.substr(1, hex.size()-1);
            } while (hex.size() != 0);
            cout << "en decimal cela donne = " << repnb;
        }
    }
    return 0;
}
Je tiens a dire que je ne veux absolument pas de commentaires sur le code source lui même, en effet je dois le rendre pour un devoir, et si il est mal optimisé ou quoi que ce soit d'autre, je tiens a ce qu'il reste tel quel, le fait que je demande de l'aide est en soi, on peut le dire, quelque chose comme de la triche. Cependant, je tiens à rendre un devoir bien fait (en fait un devoir fini) et je compte bien notifier ma recherche. Donc s'il vous plait je vous serait reconnaissant de ne concentrer votre attention que sur la ligne à problème, qui est celle barrée.

Par avance, merci.
PS: oui, je sais c'est très moche comme code.