/*Este programa convierte de binario a decimal */ #include <stdio.h> #define Tamano 35 // La variable Tamano se fija en 35 // porque los enteros de cuatro bytes // ocupan 32 bits y la ultima entrada // de una cadena en un arreglo es \n /*Prototipo de funcion Recibe*/ /* Esta funcion recibe la cadena pero no verifica que sea valida */ void Recibe( int a[]); /*Prototipo de funcion Imprime*/ /* Si la cadena es valida se calcula e imprime su equivalente decimal, si no se manda un mensaje al usuario y se termina el programa */ void Imprime( int b[]); /*/////////////////////////////// // MAIN ////////////////////////////////*/ int main() { // Abre main int arreglo[Tamano]; // En este arreglo se recibiran los valores // de la cadena binaria int evaluar; // La variable evaluar lleva el control // de la legalidad de la cadena, es decir // se introducen los unicos digitos validos 0, 1 // o se introducen valores invalidos como // 9 // Un mensaje que avisa al usuario que // hace el programa printf("\nEste programa recibe un numero " "binario y lo convierte a decimal.\n"); // Se invoca a la funcion Recibe y se le envia // la direccion de la primera posicion de arreglo Recibe(arreglo); // Se calcula e imprime el valor decimal, de // nuevo por referencia Imprime(arreglo); return 0; } // Cierra main /*//////////////////////////////////// // FUNCION RECIBE ////////////////////////////////////*/ void Recibe( int a[]) { // Abre Recibe /* En el arreglo a se guardaran las entradas de la cadena*/ int i = 0; /* La variable i sirve como contador en varios ciclos */ for( i = 0; i < Tamano; i++ ) a[i] = ' '; // Las entradas se inicializan a ' ' printf("\nIntroduzca un numero binario: \n"); /*El siguiente while recibe la cadena y la asigna al arreglo en una sola linea. Observe que al final hay un ; */ i = 0; // Se pone i = 0 while ( (a[i++] = getchar()) != '\n' && Tamano > i ); printf("\n"); } // Cierra Recibe /*///////////////////////////////////// // FUNCION IMPRIME /////////////////////////////////////*/ void Imprime( int b[] ) { // Abre Imprime int i; int potencia = 1; // La variable potencia lleva el valor de la // potencia de 2 por la cual se va a multiplicar // el digito almacenado dependiendo de su posicion int decimal = 0; // El equivalente decimal de la cadena binaria // se inicia a 0 int inicio; // La variable inicio se encarga de registrar // en donde empieza el primer digito de la cadena. // Esta cadena debe leerse de izquierda a derecha. // Este ciclo for busca de atras para // adelante el primer digito distinto // de ' ' en el arreglo. A partir de // ahi se empieza a evaluar el numero // binario for ( i = Tamano - 1; i >= 0; i-- ) { // Abre for if ( ' ' != b[i] ) { // abre if inicio = i; break; // sale de for } // Cierra if } // Cierra for // Este ciclo for evalua cada una de las // entradas del arreglo que fueron introducidas // por el usuario, las multiplica por la potencia // de 2 correspondiente a su posicion y los // productos los va sumando. La suma total sera // el valor decimal del numero. int valido = 1; // Si el binario recibido no es valido, no // se puede calcular su valor decimal. Esta // variable controla eso. En principio se establece // en 1 o cierto, ya que se asume que el usuario // introdujo un numero valido for ( i = inicio; i >= 0; i-- ) { // Abre for switch( b[i] ) { // Abre switch case '0': decimal += 0*potencia; potencia *= 2; break; case '1': decimal += 1*potencia; potencia *= 2; break; default: if ( '\n' != b[i]) { // Abre if printf("\nERROR. LA CADENA NO ES VALIDA!\n"); valido = 0; // El binario recibido no // es valido printf("\nEste caracter no es valido: "); putchar(b[i]); printf("\n"); } // Cierra if break; } // Cierra switch } // Cierra for if ( 1 == valido ) printf("\nEl valor decimal es: %d\n", decimal); else printf("\nEl numero introducido no es valido.\n"); } // Cierra Imprime
viernes, 22 de julio de 2011
Convertir de Binario a Decimal en C
Este programa convierte numeros binarios a decimales. Es, creo, completo y fácil de usar y de entender. Es de alguna manera el complemento a el programa anterior que convierte un decimal a binario.
Suscribirse a:
Enviar comentarios (Atom)
Gracias buen aporte ademas que tambien se puede hacer de esta manera :
ResponderEliminar#include
#include
using namespace std;
int main()
{
int B,R,Y,labcod1,labcod2,labcod3,labcod4,labcod5,labcod6,labcod7,labcod8;
cin>>B;
labcod1 = ((B/1)%10);
labcod2 = ((B/10)%10);
labcod3 = ((B/100)%10);
labcod4 = ((B/1000)%10);
labcod5 = ((B/10000)%10);
labcod6 = ((B/100000)%10);
labcod7 = ((B/1000000)%10);
labcod8 = ((B/10000000)%10);
R=(labcod1+labcod2+labcod3+labcod4+labcod5+labcod6+labcod7+labcod8)%2;
labcod1=labcod1*1;
labcod2=labcod2*2;
labcod3=labcod3*4;
labcod4=labcod4*8;
labcod5=labcod5*16;
labcod6=labcod6*32;
labcod7=labcod7*64;
labcod8=labcod8*128;
Y=labcod1+labcod2+labcod3+labcod4+labcod5+labcod6+labcod7+labcod8;
R=Y-R;
cout<<R<<endl;
return 0;
}
Muchas gracias a ti por compartir el código.
EliminarHola, yo empecé hace poco a estudiar del libro "como programar en c/c++ y java" cuarta edición de Deitel y en el ejercicio 3.36 la consigna es realizar un programa para pasar de binario a decimal. Les comparto como lo hice yo, parece que anda bien.
ResponderEliminar/*Pasar de sistema binario a decimal*/
#include
#include
int main()
{
int x,e=1,d=0,n=0,c=0,f=0,g=1;
printf("Ingrese un numero binario: ");
scanf("%d",&x);
while(x/e>=1) { d++; e*=10; }
e/=10;
while(c1){ g*=2; f++; }
else g=0;
n+=g;
f=0;
g=1;
e/=10;
c++;
}
printf("\nEl numero en el sistema decimal es: %d\n",n);
return 0;
}
Cualquier sugerencia es bienvenida, tengan en cuenta que el ejercicio es del capitulo tres del libro y solo vi hasta el momento if, if else, while y las operaciones básicas (todavía no vi pero seguramente habrá un comando para calcular la potencia, por eso tuve que poner while(d-c-f>1){ g*=2; f++; }
Me gustaría que alguien lo pruebe y comente porque la mayoría de los ejercicios del libro no están resueltos y es difícil saber si uno va por buen camino ya que estoy estudiando solo. Gracias.
corte y pegue pero no salieron bien las dos lineas
Eliminar#include <stdio.h
#include <stdlib.h
no puse los signos de mayor o igual poque sino se me borran stdio.h y stdlib.h
recien me doy cuenta que falta una parte del codigo porque al publicar desaparece una parte que estaba entre signo menor y mayor, tratare de subirlo bien mas adelante.
ResponderEliminarahora si, este es el codigo, solo tienen que reemplazar la letra ñ por el simbolo de mayor > porque sino cuando publico desaparece todo lo que esta entre los simbolos menor y mayor.
ResponderEliminar/*Pasar de sistema binario a decimal*/
#include <stdio.hñ
#include <stdlib.hñ
int main()
{
int c1=0,c2=0,k=0,a=1,b,x=1,d=0;
printf("Ingrese un numero binario: ");
scanf("%d",&b);
while(b/añ=1) { k++; a*=10; }
a/=10;
while(c1<k){
if((b/a%10)==1)
while(k-c1-c2ñ1){ x*=2; c2++; }
else x=0;
d+=x;
x=1;
a/=10;
c2=0;
c1++;
}
printf("\nEl numero en el sistema decimal es: %d\n",d);
return 0;
}
Great man!
Eliminar