Problème Fonction binaire
dam du 29
-
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;
}
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:
- Problème Fonction binaire
- Fonction si et - Guide
- Binaire - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
2 réponses
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
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