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 :
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.
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; }
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*
Partager