C/Visual C - Programa de conversiones

 
Vista:

Programa de conversiones

Publicado por akiwaky (12 intervenciones) el 08/11/2005 18:14:29
Acabo de finalizar un programa para convertir de un numero binario a un numero decimal
lamentablemente no funciona bien .. pero francamente no tengo idea de por que pueda ser eh hecho varias pruevas en papel y parece que esta perfecto agradeceria si alguien le da una leida.

#include<stdio.h>
#include<string.h>


void main (void)
{
char sznumeros[40];
int idecimal;
char sznumerobinario[10];
int iconta;
int iconta2;
int ilong;
int icontanulo;

printf("Numero:"); scanf("%s",sznumerobinario);

iconta2=strlen(sznumerobinario);
ilong=iconta2;
iconta2=iconta2-1;

for(iconta=0,icontanulo=0;iconta<ilong;iconta++,iconta2--)//iconta!=
{

sznumeros[iconta]=sznumerobinario[iconta2]*pow(2,iconta);//variable=

pow(numero,potencia)
icontanulo++;
}
sznumerobinario[icontanulo]='\0';
idecimal=0;
ilong=ilong-1;

while(iconta)
{
idecimal=idecimal+sznumeros[ilong];
iconta--;
ilong--;

}

printf("%i\n",idecimal);
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Programa de conversiones

Publicado por ISAIAS DUQUE (46 intervenciones) el 10/11/2005 00:49:41
amigo, yo subi dos codigos de conversiones a la pagina, checalos,

agregue el de decimal a binario, y viceversa, espero que te sirvan..

sino pos aki te mando una forma de hacerlo..

sabes convertir de decimal a binario?,.. bueno tenemos x numero ej: 16
lo que hacemos es lo sig:

16/2 = 8 residuo= 0 como ves, almaceno el residuo,
8/2 = 4 residuo= 0
4/2 = 2 residuo= 0
2/2 = 1 residuo= 0
1/2 = 0 residuo= 1

y como puedes ver, ya tengo almacenados el modulo(residuo), entonces, haz un ciclo que los imprime de forma invertida

los numeros que salieron son 00001, entonces los inviertes... de tal manera que queden asi... 10000

y ahi tienes tu conversion......

saludos y suerte!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Programa de conversiones

Publicado por ISAIAS (1 intervención) el 10/11/2005 01:26:03
disculpa, ja no habia visto que decia de binario a decimlal, bueno...

aqui te paso el codigo....

esto es lo que subi a la pag...

bueno dice 15 digitos claro que si quieres mas, le aumentas a la var. char binario
y en la funcion a la tabla.. eseporo que te srirva..

/*Realiza una funcion que se llame: "binario-decimal" y que permita y que
permita cambiar un numero binario al sistema numerico decimal*/
//Solo para 15 digitos

#include<conio.h>
#include<stdio.h>
#include<string.h>

int binario_decimal(char*binario);
void centrar(char *texto,int fila);

void main()
{
char binario[15];
clrscr();
centrar("Binario --->>>> Decimal",3);
centrar("solo 15 digitos",4);
gotoxy(1,8);printf("Numero en binario: ");
gets(binario);
gotoxy(1,11);printf("En decimal es % i", binario_decimal(binario));
getch();
}

/******************************************************************/
//FUNCION QUE CONVIERTE UN NUMERO BINARIO A DECIMAL

int binario_decimal(char *binario)
{
int resultado=0;
int aux;
int tabla[15];
int x;
int longitud;
int numero;

tabla[0]=1; tabla[1]=2; tabla[2]=4;
tabla[3]=8; tabla[4]=16; tabla[5]=32;
tabla[6]=64; tabla[7]=128; tabla[8]=256;
tabla[9]=512; tabla[10]=1024; tabla[11]=2048;
tabla[12]=4096; tabla[13]=8192; tabla[14]=16384;
tabla[15]=32768;

longitud=strlen(binario);
for(x=longitud-1;x>=0;x--)
{
if(binario[x]==49)
{
numero=1;
}
else
numero=0;

aux=(longitud-x)-1;
resultado=resultado+(numero*tabla[aux]);
}
return(resultado);
}
/*************************************************************************/
//CENTRA TU TEXTO

void centrar(char *texto,int fila)
{
int longitud;
longitud=strlen(texto);
longitud=(80-longitud)/2;
gotoxy(longitud,fila);
printf("%s",texto);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar