Bonjour à tout le forum !

Débutante en C, je m'entraîne avec ddivers exercices.
Mon exercice du jour consiste en la programmation d'un convertisseur décimal > binaire.

Voici les étapes de mon code:
- l'utilisateur saisi un nombre entier positif en base 10 ;
- le programme effectue des divisions successives par 2 jusqu'à ce que le quotient vale zéro ;
- à chaque passage dans la boucle (ci-dessus), le reste trouvé est placé dans un tableau ;
- à la fin de la boucle, grâce à une fonction j'inverse l'ordre de mon tableau ;
- j'affiche le tableau (donc le résultat en binaire).

Mon problème se pose au niveau du placement du reste dans un tableau : il ne veut pas de mon incrémentation !

Voici mon bout de code :
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
int main()
{
    int nbSaisi=0, quotient1=0, quotient2=0, resultat=0, reste=0, i=0, compteur=0, j=0;
    int tab[300]={0};
 
    printf("Saisir un nombre entier positif en base 10: ");
    scanf("%d", &nbSaisi);
 
    quotient1 = nbSaisi;
    quotient2=quotient1;
 
    while (quotient2!=0)
    {
        quotient2 = quotient1/2;
        reste = quotient1%2;
        printf("%d", reste);
        quotient1 = quotient2;
        tab[i] = reste;
        compteur=i++;
    }
 
printf("\n\nLe tableau contient %d valeurs.\n", compteur);
 
    inverseTableau(tab, compteur); //inutile d'afficher ma fonction, elle (au moins) elle fonctionne !
 
    printf("\nResultat en binaire: \n\n");
 
    for (i=0; i<compteur; i++)
    {
        printf("%d", tab[i]);
    }
 
    printf("\n\n");
 
    return 0;
}
Visiblement c'est ma ligne compteur=i++ qui ne passe pas; ça ne me compte pas la dernière valeur, quel que soit son nombre.
Par exemple, 12(base 10) donne 1100(base 2) ; sachant qu'en premier lieur c'est à l'envers (0011), ça ne me compte que les 3 premières valeurs et du coup, ça m'affiche 100.

S.O.S !

Merci d'avance pour votre aide !

Kaera*