Ir para conteúdo

Arquivado

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

Adriano Kairo

Algoritmo de Conversão de um número Decimal para Binário Usando Função

Recommended Posts

Bom dia!

 

Gostaria que alguém me mostrasse onde esta o erro nessa algoritmo.

 

 

algoritmo "EXERCÍCIO27"
// Função :RECEBER UM NÚMERO DECIMAL E CONVERTER PARA BINÁRIO,OCTAL E HEXADECIMAL DE ACORDO COM A ESCOLHA DO USUÁRIO
// Autor :
// Data : 10/11/2014
// Seção de Declarações 
var
numero:inteiro
binario: caracter
 
   funcao conversao(numero:inteiro;binario:caracter):caracter
        inicio
           Enquanto numero > 1 faca
             binario <- numero mod 2 + binario
               numero <- numero /2
                Se numero = 0 ou numero = 1 Entao
                     binario <- numero + binario
                 fimse
           fimenquanto
           retorne binario
   fimfuncao
inicio
// Seção de Comandos
 
   Escreval("Digite o núemero")
    Leia(numero)
 
  binario <- conversao(numero)
 
fimalgoritmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

1 - Declarou o nome dos parâmetros com o mesmo nome das variáveis do programa principal.
2 - Não se pode passar apenas 1 parâmetro e implementar uma função recebendo 2.

 funcao conversao(numero:inteiro; binario:caracter):caracter
 binario <- conversao(numero)

3 - Tá cheio de erros.....inclusive de lógica.

 

Aí vai um exemplo.

/*Converte um numero na base 10 para um numero
em uma base qualquer.
-->Samuel Macedo*/

#include <stdio.h>
char numparacar(int);
main()
{
long int bcknum,num,base,i,ind=0;
char j='A',numimp,vetnum[1000],vetch[1000];
printf("Numero (em base 10): ");
scanf("%d",&num);
printf("Base para a qual o numero sera convertido: ");
scanf("%d",&base);
bcknum = num;
for(i=0;i<1000;i++)
     vetch = 0;
while(num>0){
      numimp = num%base;
      if(numimp > 9){
         numimp = numparacar(numimp);
         vetch[ind]=1;

      }

      vetnum[ind] = numimp;
      ++ind;
      num = num / base;
}
  printf("%d(10) = ",bcknum);
  j=ind;
  while(vetnum[j]==0)j--;
   for(;j>=0;j--){
    if(vetch[j]==1)
    printf("%c",vetnum[j]);
    else
    printf("%d",vetnum[j]);

    }
    printf("(%d)\n",base);

}
char numparacar(NUM)
{
int a;char b='A';
for(a=10;a<NUM;a++)
     b++;
return b;
}

/*------------------------------*/

/*converte de qualquer base para decimal
-->Samuel Macedo*/

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int letparaint(char);
main()
{
    int numint,i,j,base,valdec=0,valexp,exp;
    char gt[2],num[100];

    scanf("%s",&num);

    scanf("%d",&base);
    //printf("numero carregado: %s",num);

    for(i=0;num!='{FONTE}';i++);
    exp=i-1;
    //printf("EXP: %d\n",exp);

    for(i=0;num!='{FONTE}';i++){
     valexp=1;
     for(j=0;j<exp;j++){
        valexp=valexp*base;
       // printf("valexp: %d\n",valexp);
     }

      if(num>='0'&& num<='9'){
         gt[0]= num;
         gt[1]='{FONTE}';
         numint = atoi(gt);
         //printf("numint -> %d\n",numint);

       }
       else{
          numint = letparaint(num);
       }
         valdec+=(numint*valexp);
         --exp;
    }
    printf("Valor decimal: %d\n",valdec);

}

int letparaint(char LET)
{
int cont=0,i,j;
tolower(LET);
for(i=LET;i>'a';i--)
    ++cont;
cont+=10;
  //printf("---->%d",cont);
return cont;
}

Mãos à obra!

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.