Ir ao conteúdo
  • Cadastre-se

Erro ao compilar


Nathanael Matos

Posts recomendados

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

}

Link para o comentário
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...

Link para o comentário
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 ?

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...