Remplissage automatique de tableau à taille variable
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:
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*