Programme en c : transformer de decimal au binair
DevGl
Messages postés
136
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
je suis une studiante 1°ére année génie informatique , et je voulais ecrire un programme concernant transformation d'un nombre décimal au binair , je l'ai esseyé mais sans résultat , lors de la compilation il ne m'affiche aucun problemes, mais dans l'éxécution,je ne obtient aucun résulats,
voila le programme en language C :
est que vous pouvez m'aider a retrouver les fautes que j'ai commis ??? s'il vous plaaaaaaaait !!
et merci d'avance :)
je suis une studiante 1°ére année génie informatique , et je voulais ecrire un programme concernant transformation d'un nombre décimal au binair , je l'ai esseyé mais sans résultat , lors de la compilation il ne m'affiche aucun problemes, mais dans l'éxécution,je ne obtient aucun résulats,
voila le programme en language C :
#include<stdio.h> #include<stdlib.h> int conver(int[],int [],int); int choisir(int); main(){ int A,t1[10],t2[10],m; printf("entrer le nombre \n"); choisir(A); printf("voila le nombre que vous avez choisis en binair %d ",conver(t1,t2,m)); system("pause"); } int choisir(int x){ scanf("%d",&x);} int conver(int j[],int k[],int b){ int i; int A= choisir(A); j[0]=A/2; k[0]=A%2; for(i=0;i<=10;i++){ j[i+1]=j[i]/2; k[i+1]=j[i]%2; if(j[i]<2){ break;} return k[i];}}
est que vous pouvez m'aider a retrouver les fautes que j'ai commis ??? s'il vous plaaaaaaaait !!
et merci d'avance :)
A voir également:
- Programme en c : transformer de decimal au binair
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Message programmé iphone - Guide
- Programme word gratuit - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
3 réponses
tien, après indentation correcte du code, et sans même l'avoir lu, voilà ce que je trouve :
#include<stdio.h> #include<stdlib.h> int conver(int[],int [],int); int choisir(int); main(){ int A,t1[10],t2[10],m; printf("entrer le nombre \n"); choisir(A); printf("voila le nombre que vous avez choisis en binair %d ",conver(t1,t2,m)); system("pause"); } int choisir(int x) { scanf("%d",&x); } int conver(int j[],int k[],int b) { int i; int A = choisir(A); j[0] = A / 2; k[0] = A % 2; for(i=0; i <= 10; i++) { j[i+1] = j[i] / 2; k[i+1] = j[i] % 2; if(j[i]<2) { break; } return k[i]; // ici, tu retournes dans ton for, tu ne fais ta boucle qu'une seule fois } }
il ne manque pas de return dans ta fonction choisir?
Et c'est normal que tu utilises deux fois la fonction choisir? tu demandes 2 fois la valeur de A?
j'ai pas de compilateur sous la main, mais je pense qu'un truck comme ça fonctionnerait peut être.
Et c'est normal que tu utilises deux fois la fonction choisir? tu demandes 2 fois la valeur de A?
j'ai pas de compilateur sous la main, mais je pense qu'un truck comme ça fonctionnerait peut être.
void conver(int A) { A=A%2; int binair = A; int i = 1; do { A=A%2; binair = binair + 10*i*A; i++; }while (A>2); printf("voila le nombre que vous avez choisis en binair %d ",binair); }
main(){
Le bon prototype du main() sans argument est : int main(void) {
Et n'oublie pas de mettre un return 0; en fin pour dire que tout s'est bien passé.
choisir(A);
Tu passes en paramètre la valeur, donc aucune chance que A soit modifié. Il faudrait plutôt faire : choisir(&A);
Et donc redéfinir la fonction saisir() :
J'ai mis "void" au lieu de "int" car elle ne renvoie rien. Ou alors faut mettre un return.
int A = choisir(A);
Il faut savoir. Soit choisir() te renvoie la valeur choisie par l'utilisateur, soit cela change la valeur passée en paramètre. Si tu choisis le dernier cas : choisir(&A);
for(i=0; i <= 10; i++)
Les tableaux ont 10 éléments. Donc, il faut aller jusqu'à 9 => i<10;
Mais ici, il faut mettre i<9 (vu que tu accèdes à j[i+1]
Dans ta fonction conver(), il faut t'assurer qu'elle renvoie (return) une valeur dans tous les cas, ce qui ne semble pas être le cas ici.
Voilà pour la correction des fautes. Il en reste peut-être d'autres et l'algorithmique me semble également à revoir.
N'hésite pas à reposter ton code en prenant compte de ses remarques en l'indentant correctement.
Cdlt,
Le bon prototype du main() sans argument est : int main(void) {
Et n'oublie pas de mettre un return 0; en fin pour dire que tout s'est bien passé.
choisir(A);
Tu passes en paramètre la valeur, donc aucune chance que A soit modifié. Il faudrait plutôt faire : choisir(&A);
Et donc redéfinir la fonction saisir() :
void saisir(int *A) { scanf("%d",A); /*pas de & car A est un pointeur*/ }
J'ai mis "void" au lieu de "int" car elle ne renvoie rien. Ou alors faut mettre un return.
int A = choisir(A);
Il faut savoir. Soit choisir() te renvoie la valeur choisie par l'utilisateur, soit cela change la valeur passée en paramètre. Si tu choisis le dernier cas : choisir(&A);
for(i=0; i <= 10; i++)
Les tableaux ont 10 éléments. Donc, il faut aller jusqu'à 9 => i<10;
Mais ici, il faut mettre i<9 (vu que tu accèdes à j[i+1]
Dans ta fonction conver(), il faut t'assurer qu'elle renvoie (return) une valeur dans tous les cas, ce qui ne semble pas être le cas ici.
Voilà pour la correction des fautes. Il en reste peut-être d'autres et l'algorithmique me semble également à revoir.
N'hésite pas à reposter ton code en prenant compte de ses remarques en l'indentant correctement.
Cdlt,