• Domingo 15 de Diciembre de 2024, 13:32

Autor Tema:  Ayuda Para Separar Digitos  (Leído 1569 veces)

ifmaster

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Ayuda Para Separar Digitos
« en: Sábado 5 de Junio de 2004, 23:22 »
0
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:

ifmaster

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: Ayuda Para Separar Digitos
« Respuesta #1 en: Sábado 5 de Junio de 2004, 23:42 »
0
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);

   digit1 = binary_number / 10000;
   module = binary_number % 10000;

   digit2 = module / 1000;
   module = binary_number % 1000;

   digit3 = module / 100;
   module = binary_number % 100;

   digit4 = module / 10;
   digit5 = module;

   newdigit1 = digit1 * 16;
   newdigit2 = digit2 * 8;
   newdigit3 = digit3 * 4;
   newdigit4 = digit4 * 2;
   newdigit5 = digit5 * 1;

   decimal_number = newdigit1 + newdigit2 + newdigit3 + newdigit4 + newdigit5;

   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?

-SB-

  • Miembro activo
  • **
  • Mensajes: 60
    • Ver Perfil
Re: Ayuda Para Separar Digitos
« Respuesta #2 en: Domingo 6 de Junio de 2004, 23:53 »
0
para pasar de binario a decimal, puedes hacer algo asi:
Código: Text
  1.  
  2. int res = 0; int z = 0;
  3. while (n != 0)
  4. {
  5.   res = res + (n % 10) * 2 ** z;
  6.   z++;
  7.   n = n / 10;
  8. }
  9.  
  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..

Un saludo!!