Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
Nathanael Matos

Erro ao compilar

Recommended Posts

#include <cstdlib>

#include <iostream>

#include<stdio.h>

#include<conio.h>

using namespace std;

int 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='\0';

}

void binario()

{

int numero, bin[100];

printf("Digite um numero em decimal: ");

scanf("%d",&numero);

binario(numero, bin); ACUSSA O ERRO AQUI (NO MATCHING FUNCTION FOR CALL TO 'BINARIO(INT&INT[100])')

printf("\nO binario deste numero e %s", bin);

getch();

}

int main()

{

binario ()

system("PAUSE");

return EXIT_SUCCESS;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aí Nathanael Matos, para mudar isso declare char bin[100], apesar que acho que não precisa de 100 caracteres para representar o valor já que um int tem tamanho de 4 bytes (00000000 00000000 00000000 00000000) e acredito que mostraria o binario errado ou daria erro de execução se o usuario digitar um número maior que 2147483647 (01111111 11111111 11111111 11111111).Você tambem declarou int binario(int numero, char bin[]), porém ela não retorna nada.Tambem não entendi porque você declarou a header <iostream>... Não é legal misturar C e C++...

seu código em C++ :


[B]#include <iostream>[/B]
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';
}

void binario(void)
{
[B]int numero;
char bin[33];[/B]
std::cout<<"Digite um numero em decimal: ";
std::cin>>numero;
binario(numero, bin);
std::cout<<"\nO binario deste numero e : "<<bin;
}


int main()
{
binario ();
system("pause >nul");
return 0;
}

Seu código em C :


[B]#include <stdio.h>
#include <stdlib.h>[/B]
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';
}

void binario(void)
{
[B]int numero;
char bin[33];[/B]
printf("Digite um numero em decimal: ");
scanf("%d",&numero);
binario(numero,bin);
printf("\nO binario deste numero e : %s",bin);
}

int main()
{
binario ();
system("pause >nul");
return 0;
}

Espero terajudado aí...

E... baciotti, não entendi: "Todo int retorna uma funcao", poderia explicar melhor...

Compartilhar este post


Link para o post
Compartilhar em outros sites

#include <iostream>

#include <sstream>

#include <string>

using namespace std;

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='\0';

}

bool binario_valido(const string &binario)

{

int ok = 0;

if(binario.length() < 1){

return false;

}

for(int i = 0; i < binario.length(); i++){

if((binario == '0') || (binario == '1'))

ok++;

}

if(ok == binario.length())

return true;

else{

return false;

}

}

int bindec()

{

int tamanho;

int digito;

double loop = 0.0;

double decimal = 0.0;

int binario_como_inteiro;

string binario;

do{

getline(cin, binario);

} while(!binario_valido(binario));

stringstream ss(binario);

ss >> binario_como_inteiro;

tamanho = binario.length();

do {

digito = binario_como_inteiro % 10;

binario_como_inteiro /= 10;

decimal += digito * pow(2, loop++);

} while(loop != tamanho);

return decimal;

}

char* dec_oct(int dec)

{

using namespace std;

char *rtn;

int prev, len, temp, *OCT;

prev = dec;

for(int i=0;prev!=0;i++)

{

prev = prev/8;

len=i;

}

OCT = new int[len+1];

prev = dec;

for(int i=0;prev!=0;i++)

{

OCT = prev%8;

prev = prev/8;

len=i;

}

OCT[len+1] = prev%8;

len++;

for(int i=0;i<len/2;i++)

{

temp=OCT;

OCT=OCT[len-1-i];

OCT[len-1-i]=temp;

}

rtn = new char[len+1];

for(int i=0;i<len;i++)

{

rtn=OCT+'0';

rtn[i+1]='\0';

}

return rtn;

}

string dec2hex(int dec)

{

int i = 0;

stack <int>remainder;

string hex, temp;

char hexDigits[] = { "0123456789ABCDEF" };

while (dec != 0)

{

remainder.push(dec % 16);

dec /= 16;

++i;

}

while (i != 0)

{

if (remainder.top() > 15)

{

temp = dec2hex(remainder.top());

hex += temp;

}

hex.push_back(hexDigits[remainder.top()]);

remainder.pop();

--i;

}

return hex;

}

aii vai faltar criar o procedimento que vai chamar cada funcao;

a do primeiro :

void binario(void)

{

int numero;

char bin[33];

printf("Digite um numero em decimal: ");

scanf("%d",&numero);

binario(numero,bin);

printf("\nEste numero em Binario e : %s",bin);

}

Posso fazer o restante igual essa primeira ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×