Ir para conteúdo
Fórum Script Brasil
  • 0

Como Retornar Dois Valores Em Uma Função


WarSoldier

Pergunta

Amigos eu tinha que retornar dois valores, alguém pode me ajudar, o codigo é esse em baixo

#include <iostream.h>

convebin(unsigned long int decimal)

{

int i,j, nb;

int bin[32];

i = 0;

do

{

bin = decimal % 2;

decimal = decimal / 2;

i++;

}

while (decimal != 0);

nb=i-1;

}

TIPO EU QUERIA que ESSA FUNÇÃO RETORNA-SE O nb E O VETOR bin[], POIS TERIA QUE TER PARA FAZER UM CALCULO...

esse algoritmo converte a base decimal em binario, na realidade eu quero isso para saber quantos bits o numero vai ter, pois com base nisso daria para depois saber quantas posições do vetor estaria ocupada...

E sei que esta invertido a transformação em binario...

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Corrijam-me se eu estiver errado, mas a funcao chamadora teria que ter conhecimento dessas variaveis, dessa forma, bastaria você declarar o vetor e a outra var na funcao chamadora, e passa-las por referencia.

Tipow:

convebin(unsigned long int decimal, int bin[], *nb)

{

....

}

Assim tudo o que você alterasse dentro desse escopo seria alterado fora dele... recomendo leitura de ponteiros ;)

Falows

Link para o comentário
Compartilhar em outros sites

  • 0

é você deu uma boa ideia... mas fiz outro, coloquei o tamanho da vetor no ponto zero da matriz... agora só falta eu conseguir retornar a matriz completa, ou melhor o vetor...

exemplo segue abaixo, está dando erro, no retorno... o a variavel dec é ´so para dar uma pausa...

#include <iostream.h>

int convbin(unsigned long int decimal);

main()

{

unsigned long int decimal;

int nb[34], j, dec;

cout<<"entre com o decimal"<<endl;

cin >>decimal;

nb[34]=convbin(decimal);

for (j=nb[0]; j>=1; j--) /* Para mostrar o array invertido */

cout << nb[j];

cout << endl;

cin>> dec;

}

int convbin(unsigned long int decimal)

{

int i,j;

int bin[34];

i = 1;

do

{

bin = decimal % 2;

decimal = decimal / 2;

i++;

}

while (decimal != 0);

bin[0]=i-1;

return bin[];

}

Link para o comentário
Compartilhar em outros sites

  • 0

Deu certo assim comigo:

#include <iostream>

const int MAX = 34;

int* convbin(unsigned long int decimal);

using namespace std;

int main()
{
    unsigned long int decimal;
    int *nb, j, dec;
    cout << "Entre com o decimal:" << endl;
    cin >> decimal;
    nb = convbin(decimal);

    for (j=nb[0]; j>=1; j--) /* Para mostrar o array invertido */
        cout << nb[j];
    cout << endl;
    cin >> dec;
}

int* convbin(unsigned long int decimal)
{
    int i,j;
    int bin[MAX];

    i = 1;
    do
    {
        bin[i] = decimal % 2;
        decimal = decimal / 2;
        i++;
    }
    while (decimal != 0);
    bin[0]=i-1;
    return bin;
}

Ok? ;)

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que temn algum erro, pois coloco um numero em decimal e aparece um outro numero decimal...

Kd o rusultado em binario...

Eu tive olhando e não consegui ver aonde esta o erro...

abraços

Deu certo assim comigo:

#include <iostream>

const int MAX = 34;

int* convbin(unsigned long int decimal);

using namespace std;

int main()
{
    unsigned long int decimal;
    int *nb, j, dec;
    cout << "Entre com o decimal:" << endl;
    cin >> decimal;
    nb = convbin(decimal);

    for (j=nb[0]; j>=1; j--) /* Para mostrar o array invertido */
        cout << nb[j];
    cout << endl;
    cin >> dec;
}

int* convbin(unsigned long int decimal)
{
    int i,j;
    int bin[MAX];

    i = 1;
    do
    {
        bin[i] = decimal % 2;
        decimal = decimal / 2;
        i++;
    }
    while (decimal != 0);
    bin[0]=i-1;
    return bin;
}

Ok? ;)

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Eu digito 5 aparece 172082244754136... Graymalkin qual é o copilador que você está usando no meu borland builder 6, ainda está aparecendo [C++ Warning] cifrando3.cpp(37): W8075 Suspicious pointer conversion, Na hora de copilar...

Abraços...

Qual valor você está digitando? Aqui eu coloco 5 e aparece 101, o que é o correto.

Abraços,

Graymalkin

No caso, dentro do int* convbin(unsigned long int decimal) aparece sim a conversão perfeitamente, mas quando sai de dentro da função, não aparece...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...