11 de abr. de 2009

Programa em C++ para converter de binário para decimal

Desenvolvi esse programinha pra converter números inteiros "binários" em decimais. Para tanto, fiz usa do paradigma POG (programação orientada à gambiarra) de programação. O lance é que não vale usar qualquer tipo de comando. Na verdade, apensa if, else e while.
Quem souber onde o código pode ser melhorado, por gentileza me diga. De preferência, que se elimine o uso da variável "patch".

#include <iostream>

using std::cin;
using std::cout;
using std::endl;

int main()
{

int bin;
int power = 1;
int div = 10;
int dec = 0;
int patch=1;
int aux;
cout << "Entre numero binario a ser convertido: ";
cin >> bin;
aux = bin;

while (bin > 0)
{
if (aux%div != 0)
{
dec += power;
aux-=patch;
}

power *=2;
div *= 10;
patch*= 10;
bin /= 10;
}
cout << dec << endl;
}

Um comentário:

PH disse...

na primeira parte
while (bin > 0)
{
if (aux%div != 0)
{
dec += power;
aux-=patch;
}

acho que poderia tirar o patch
while (bin > 0)
{
if (aux%div != 0)
{
dec += power;
aux = aux-1;
}