Programme en c : transformer de decimal au binair
Fermé
DevGl
Messages postés
136
Date d'inscription
samedi 23 novembre 2013
Statut
Membre
Dernière intervention
16 mai 2015
-
Modifié par pijaku le 2/01/2014 à 17:58
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 3 janv. 2014 à 11:07
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 3 janv. 2014 à 11:07
A voir également:
- Programme en c : transformer de decimal au binair
- Programme demarrage windows 10 - Guide
- Programme démarrage windows 10 - Guide
- Fichier ouvert dans un autre programme - Guide
- Desinstaller un programme - Guide
- Programme bonjour c'est quoi ✓ - Forum Logiciels
3 réponses
Templier Nocturne
Messages postés
7734
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
21 mai 2016
1 101
2 janv. 2014 à 17:40
2 janv. 2014 à 17:40
Il pique les yeux ton code, il faut l'indenter :(
Templier Nocturne
Messages postés
7734
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
21 mai 2016
1 101
2 janv. 2014 à 17:48
2 janv. 2014 à 17:48
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); }
ellana29460
Messages postés
689
Date d'inscription
lundi 7 octobre 2013
Statut
Membre
Dernière intervention
12 septembre 2015
172
3 janv. 2014 à 09:51
3 janv. 2014 à 09:51
ou faire du
int nombre; scanf("%d",&nombre); printf("Voila %d en binaire %b",nombre,nombre);
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 835
3 janv. 2014 à 10:50
3 janv. 2014 à 10:50
%b, ça n'existe pas...
ellana29460
Messages postés
689
Date d'inscription
lundi 7 octobre 2013
Statut
Membre
Dernière intervention
12 septembre 2015
172
3 janv. 2014 à 10:55
3 janv. 2014 à 10:55
tant pis, alors. (j'essayais %b en me disant "apres tout, %x existe)
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 835
3 janv. 2014 à 11:07
3 janv. 2014 à 11:07
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,