Conversão de Decimal para Binário

Publicado por marlon luis petry 31/05/2005

[ Hits: 29.382 ]

Homepage: http://petryx.blogrs.com.br

Download decbin.c




Este algoritmo converte um número decimal para um número binário através de um pilha dinâmica.

  



Esconder código-fonte

/******************************************************************************
**Author = Marlon Petry                                 
**e-mail = [email protected]                     
**Date = 29/05/2005                           **Description: Decimal to binary with queue dynamical                        
** This file may be distributed and/or modified under the terms of the   
** GNU General Public License version 2 as published by the Free software                                                                                    
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.                           
**                                       ******************************************************************************/

#include <stdio.h>

typedef struct queue 
{
   int value;
   struct queue *prev,*next;
}q;

q *topo = NULL,*base = NULL;   

void push(int value)
{
   q *aux;
   if(topo == NULL)
   {
      base = (q *) malloc(sizeof(q));
      base->value = value;
      base->next = NULL;
      base->prev = NULL;
      topo = base;
   }
   else
   {
      aux = (q *) malloc(sizeof(q));
      aux->value = value;
      aux->prev = topo;
      aux->next = NULL;
      topo->next = aux;
      topo = aux;
   }
}

int pop()
{
int value;
   if(topo == NULL)
       return -1;
   else
   {
      value= topo->value;
      topo = topo->prev;
   }
   return value;
}

void convertDecBin(int dec)
{
   int r;
   while(dec != 0)
   {
      r = dec%2;
      push(r);
      dec = dec/2;
      
   }
}

void show()
{
   int flag = 0,b;
   printf("\nValue Binary is ");
   while(flag != 1)
   {
      
      b = pop();
      if(b == -1)
         flag = 1;
      else
         printf("%d",b);
   }
}

main()
{
   int dec;
   int ch;
   do
   {
      
      printf("Inform value DECIMAL\n");
      scanf("%d",&dec);
      convertDecBin(dec);
      show();
      
      puts("\n-1 for finish");
      scanf("%d",&ch);
   }while(ch != -1);
}

Scripts recomendados

Imprimindo uma arvore graficamente

Driver tgz

Fibbonacci com Memoization - O(n)

Joguinho de labirinto usando as setas do teclado

Tipos de Dados Abstrato - TDA - Números Complexos


  

Comentários
[1] Comentário enviado por alexiago em 04/06/2005 - 15:20h

primeiro, esse algoritmo não devia estar na categoria avançado.
segundo, ele foi MAL ELABORADO, o cara fez o programa com 98 linhas, um algoritmo simples q pode ser feito em 20 linhas....

pense sobre isso...

Thiago Alexandre
C. Computação

[2] Comentário enviado por marlonp em 04/06/2005 - 18:27h

Caro Thiago

Talvez este algoritmo esteja na categoria errada peço descuplas.
O intuito deste algoritmo é mostrar o funcionamento de uma pilha dinâmica, este algoritmo pode ser muito menor com recursão.
Então thiago peço que contribua com seus conhecimentos de C. Computação e coloque em algoritmo recursivo aqui no site.


[3] Comentário enviado por pink em 23/03/2008 - 20:20h

Oie Marlonnnnnnnnnn
Você não faz idéia do quanto me ajudou com sua contribuição... é por isso que eu amo essa comunidade....
Bjo no S2 fike com Deus e obrigada.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts