Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Tempter

Decimal para Binário

Recommended Posts

To com o seguinte problema pessoal, tentando converter números decimais para binário eu recebo a seguinte msg:

 

Cannot convert 'int *' to 'int'

 

o código é

/*====== BINARIO =======*/#include <conio.h>#include <stdio.h>int binario (int numero);int main(){	int numero;	clrscr();	printf("Digite um numero = ");	scanf("%d",& numero);	printf("\nO binario deste numero e %d", binario(numero));	getch();	return (0);}int binario (int numero){	int i=0, bin[100];	while (numero > 1)	{  if( (numero % 2) == 0) { bin[i] = 0; }  // o erro aparece aqui  else { bin[i] = 1; }  numero = numero / 2;  i++;	}	return (bin);}

 

Alguem sabe me dizer o que está errado ?

Se alguem puder me explicar como fazer um programa com esta funcionalidade que eu preciso eu agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

scanf("%d",& numero);

 

voce colocou um esoaço no & numero

 

scanf("%d",&numero);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poxa cara eu deixei sem o espaço e o erro ainda é o memso. Aliás, nos meus outros códigos eu fiz com espaço entre a variável e o & e nunca tive problemas.Continuo recebendo a msg: Invalid Indirection pra linha 29 e a 30. o que será que pode ser? passei a manhã toda tentando resolver...Brigadão pela ajuda heim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

estou no serviço e nao tenho compilador akkimas...tente não usar a mesma variavel numeroint main(){int numero;clrscr();int binario (int numero) use int binario (int valor)usa return variavel; sem os ()talvez seja só sintaxeflw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Tempter, eu não cheguei a ler seu fonte. Mas uma vez eu fiz um programa que fazia isso, ele está em C, mas é super facil de entender. Da uma olhadinha na lógica e depois usa a lógica para o seu programa. FALOU...

 

void binario();main()	{	int num;	clrscr();	printf("Entre com o valor: ");	scanf("%d",&num);	printf("\n");	while(num<0)  {  clrscr();  printf("Entre com o valor: ");  scanf("%d",&num);  }	printf("O numero %d em binario e: ",num);	binario(num);	getch();	}void binario(int n)	{	int resto;	if(n!=0)  {  resto=n%2;  n=n/2;  binario(n);  printf("%d",resto);  }	}

Compartilhar este post


Link para o post
Compartilhar em outros sites

ai o problema eh q você está tentando retornar um vetor e isso não da certo, se você quiser que a função retorne um vetor pra você. você passa ela como argumento da função, quando você faiz isso o vetor é automatimamento convertido para um ponteiro.

o jeito mais facil de fazer esse codigo funciona é criar um vetor de char no lugar do int... tenta esse aqui.

#include <conio.h>#include <stdio.h>int binario (int numero, char bin[]);int main(){int numero;char bin[100];clrscr();printf("Digite um numero = ");scanf("%d",& numero);binario(numero, bin);printf("\nO binario deste numero e %s", bin);getch();return (0);}int binario (int numero, char bin[]){int i=0;while (numero > 1){ if( (numero % 2) == 0) { bin[i] = '0'; } else { bin[i] = '1'; } numero = numero / 2; i++;}bin[i]='\0';return 0;}
ta rodando, mas a sua lógica ta errada ele num ta calculando certo.

 

esse aqui ta certinho; http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

#include<stdio.h>#include<conio.h>void binario(int numero, char bin[]);main(){    char bin[100];    int numero;    printf("Digite um numero = ");    scanf("%d",&numero);        binario(numero, bin);    printf("\nO binario deste numero e %s", bin);    getch();}void binario(int numero, char bin[]){    int i=0,j=0, num=numero;         if(numero>0){        while(num>0){num/=2;i++;}        while(numero>0){            bin[(i-1)-j]=( numero%2==0 )? '0' : '1';            numero/=2;            j++;        }    }else{        bin[0]='0';        i=1;    }    bin[i]='\0';}
eh isso ai, qualquer duvida manda um PM ou posta aqui, falow.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aproveitando esse assunto e esse código de cima que já converteu um número de decimal para binário, eu quero saber como converte 2 números de decimal para binário e depois soma e fazer o complemento de 2(caso seja negativo).

Compartilhar este post


Link para o post
Compartilhar em outros sites

eh kra, mas eu estou me esforçando pra aprender sim e pq eu estou no 2° Periodo de Ciência da Computação e estou aprendendo agora o C, e estou com muitas dificuldades, mas muito obrigado pelo seu conselho apesar de já estar a segui-lo a muito tempo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode fazer isso:

 

criar uma struct com um int de 100 posições...

 

typedef struct{  int valor[100];} int100;

E na função binário, ao invez de retornar um inteiro, retorne essa estrutura.

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bacana, o ultimo exemplo funciona perfeitamente, mas o exemplo em sala de aula foi o abaixo, pq naum funciona ?

 

-------------------------------

int exibebinario(int n);
void main(void){
	int n;
	clrscr();
	printf("Num ?");
	scanf("%d",&n);
	printf("Binario ");
	exibebinario(n);
	getch();
}
int exibebinario(int n){
	int b[15],i,j;
	i=0;
	while (n>0){
		b[i] = n%2; n = n/2; i++;
	}
	for (j=i+1;j>=0;j--)
	printf("%d",b[i]);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.