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
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 :


#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:

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
Il pique les yeux ton code, il faut l'indenter :(
0
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
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
	}
}
0
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.

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);

}
0
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
ou faire du

int nombre;
scanf("%d",&nombre);
printf("Voila %d en binaire %b",nombre,nombre);
0
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
%b, ça n'existe pas...
0
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
tant pis, alors. (j'essayais %b en me disant "apres tout, %x existe)
0
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
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() :
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,
0