Programación General => C/C++ => Mensaje iniciado por: ifmaster en Sábado 5 de Junio de 2004, 23:22
Título: Ayuda Para Separar Digitos
Publicado por: ifmaster en Sábado 5 de Junio de 2004, 23:22
Ya pille como se hace para divir un numero de 5 digitos en 5 numeros equivalentes a los digitos del primer numero :P pero se hacerlo sabiendo de antemano que se van a introducir 5 digitos (o 1 o 10 :P) pero hay alguna forma de hacer que la makina detecte cuantos digitos se han introducido? (no valen los arrays :P, bueno si no hay mas manera de hacerlo pues vale :P) thx :lol: :comp:
Título: Re: Ayuda Para Separar Digitos
Publicado por: ifmaster en Sábado 5 de Junio de 2004, 23:42
El programa: (lo que tiene que hacer es, leer un numero binario y pasarlo a decimal) #include <stdio.h> #include <conio.h>
int main() { clrscr();
int digit1, digit2, digit3, digit4, digit5, decimal_number; int newdigit1, newdigit2, newdigit3, newdigit4, newdigit5; long int binary_number, module;
printf("Introduce un numero binario (0 y 1) de 5 digitos: "); scanf("%ld", &binary_number);
printf("El numero binario introducido es %d%d%d%d%d\nSu equivalente a decimal es %d", digit1, digit2, digit3, digit4, digit5, decimal_number);
return 0; }
A lo mejor a alguien le extraña las 5 variables newdigit (ya que se podian haver convertido directamente las digit a decimal :P) pero si no las usara en la frase del final si el numero binario introducido fuera 00010 me saldria como 10 :P Pues weno, aki se sabe k va a haver 5 digitos (si escribes mas o menos el programa no funciona bien :P) la question esta en hacer un codigo en el k no sepamos cuantos cuantos digitos tendra el numero binario que introducira el usuario y desde luego k se calcule bien el resultado al ser pasado a decimal, e pensado algo pero solo funcionaria usuando arrays y tampoco se muy bien como hacerlo :P alguien puede ayudar please?
Título: Re: Ayuda Para Separar Digitos
Publicado por: -SB- en Domingo 6 de Junio de 2004, 23:53
para pasar de binario a decimal, puedes hacer algo asi:
Código: Text
int res = 0; int z = 0;
while (n != 0)
{
res = res + (n % 10) * 2 ** z;
z++;
n = n / 10;
}
Teniendo en n al principio el numero en binario, al terminar este programa tenemos en res, su equivalente en decimal.. Deberiamos controlar tb, q n solo tiene unos y ceros y alguna otra cosilla pero eso te lo dejo a ti ;)
Uso ** para hacer un numero elevado al otro, no se si esto se puede usar en c, pero si no es asi habra alguna funcion explicita para ello, o te la puedes hacer sin mucho problema. Si no funciona igual se me olvida algo jeje..