Problème Fonction binaire

dam du 29 -  
 dam du 29 -
Bonjour,
j'ai crée une fonction pour transformer un nombre entré (maximum "32") en un nombre binaire sur 5 bits, mais lors de la compilation, mon programme plante en me mettant une fenêtre d'erreur. J'ai beau regarder je ne vois pas qu'elle est mon erreur ..
Si quelqu'un pouvais m'aider,
merci d'avance

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int convert(int nb);

int main()
{
int nb;
do{
printf("Entrez un nombre positif entier de 0 à 32\n");
scanf("%d",&nb);
}
while(nb<0 || nb>32);
convert(nb);
return 0;
}

int convert(int nd)
{
int b[5]={0},i,t=32;
for(i=0;i<5;i=i++){
t=t/2;
b[i]=(nd/t);
nd=nd%t;
}
for(i=5;i>0;i--){
printf("%d",b[i]);
}

return nd;
}
A voir également:

2 réponses

KX Messages postés 19031 Statut Modérateur 3 020
 
Déjà sur 5 bits, ton nombre doit être compris entre 0 et 31.
Ensuite ce n'est pas un problème à la compilation mais à l'exécution !

Ton problème vient de la deuxième boucle for de convert.
Tu écris for (i=5; i>0; i--) alors qu'il faudrait mettre for (i=4; i>=0; i--).
Cependant ça t'afficherait le résultat à l'envers, donc le mieux c'est for (i=0; i<5; i++)
Du coup tu pourrais mettre les deux boucles dans une seule et t'éviter l'utilisation de b

De plus tu retournes nd, ce qui n'a pas de sens, ce n'est pas un résultat et en plus tu ne l'utilises pas ! Mets void convert(int nd) c'est plus propre.

Enfin, i=i++ est une syntaxe pour le moins curieuse, i++ suffit !
La confiance n'exclut pas le contrôle
1
dam du 29
 
Merci d'avoir pris le temps de me répondre en effet beaucoup d'erreur que je n'arrivais pas à voir ..
Merci ;)
0