Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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;

}

Editado por Nathanael Matos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo protótipo da função, binário espera que o segundo parâmetro seja um array de char, e você está passando como argumento um array de int.

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 ?

Editado por Nathanael Matos

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

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

×