Estás en: Inicio >> Foros >> Informática >> Programación
Programación /

[C/C++] De decimal a binario

Participa en el tema [C/C++] De decimal a binario en el foro Programación.
Hola, tengo problema con este codigo, el compilador lo compila pero cuando lo ejecuto y ...

Buscar en este tema:
1 2 >
 
  •  
    #1 [C/C++] De decimal a binario
    Hola, tengo problema con este codigo, el compilador lo compila pero cuando lo ejecuto y mero un numero cuando me lo pide se cuelga el programa :S . El codigo es este

    #include<stdio.h>
    main()
    {
    int numero=0;
    int resto=0;
    printf("Inserte un numero entero\n");
    scanf("%d" , numero);
    do
    {
    resto=numero%2;
    numero=numero/2;
    printf("%d", resto);
    } while ( numero > 0 );
    getchar();
    getchar();
    }

    Otra duda es que si esto andara el resultado me quedaria al reves :S alguien sabria como invertirlo.

    Saludos.
    +
     
    0
    Me gusta
     
    http://www.psicofxp.com/forums/programacion.313/829006-c-c-de-decimal-a-binario.html
    | Más
  • #2 Re: De decimal a binario

    "while ( numero > 0 )"

    mmm... podría estar ahí el tema. Quizá no sale del ciclo. Metele un printf adentro del while y si vez que te lo imprime todo el tiempo es porque queda colgado ahí.
    Cualquier cosa chiflá.
    Suerte con eso!
    Me gusta este mensaje
  • #3 Re: De decimal a binario

    yo tambien considero que el detalle esta en while(numero > 0);
    Me gusta este mensaje
  • #4 Re: De decimal a binario

    No es el while, es que (1) la salida se queda en el buffer; hay que hacerle flush a stdout o emitir un '\n' para que salga a la consola; (2) el usuario debería hacer un tutorial para aprender C.
    Me gusta este mensaje
  • #5 Re: De decimal a binario

    Originalmente publicado por pangus Ver mensaje
    No es el while, es que (1) la salida se queda en el buffer; hay que hacerle flush a stdout o emitir un '\n' para que salga a la consola; (2) el usuario debería hacer un tutorial para aprender C.
    Ahora para invertir el numero lo que podes hacer es:
    1) Usas una pila, o sea vas apilando digito a digito y luego desapilas y con eso se invierte el orden, oooooo
    2) Usas propiedades matematicas como resto de division entera por 10 y multiplicacion por 10... por ejemplo algo asi:

    Código:
    NUMERO = LEER();
    NUMEROINVERTIDO = 0;
    
    HACER
        DIGITO = NUMERO % 10;
        NUMERO = NUMERO /10
        NUMEROINVERTIDO = NUMEROINVERTIDO * 10 + DIGITO;
    MIENTRAS NUMERO > 0
    
    Con ese algoritmo ya tenes el numero invertido, es decir si tengo el numero

    123456789

    Se ejecutaria asi
    123456789 % 10 = 9
    Numero ahora es 12345678 y Digito es 9
    Numero Auxiliar queda = 0 * 10 + 9 = 9

    Se reinicia el ciclo
    12345678 % 10 = 8
    Numero ahora es 1234567 y Digito es 8
    Numero Auxiliar queda = 9 * 10 + 8 = 98

    Y asi se va a ir formando 987, 9876, 98765, 987654, 9876543, 98765432, 987654321

    Bueno si tomamos el tipo de dato apropiado, por ejemplo un long integer, o long long integer, un numero asi cabria, pero si tomamos un byte o un short no cabria y daria overflow (cosa que depende del lenguaje y la implementacion del lenguaje se va a comportar de una forma distinta)...

    Saludos
    Pablo
    Me gusta este mensaje
  • #6 Re: De decimal a binario

    Originalmente publicado por ExtrañoInocente Ver mensaje
    Código:
    HACER
        DIGITO = NUMERO % 10;
        NUMERO = NUMERO /10
        NUMEROINVERTIDO = NUMEROINVERTIDO * 10 + DIGITO;
    MIENTRAS NUMERO > 0
    
    [...]

    Y asi se va a ir formando 987, 9876, 98765, 987654, 9876543, 98765432, 987654321

    Bueno si tomamos el tipo de dato apropiado, por ejemplo un long integer, o long long integer, un numero asi cabria, pero si tomamos un byte o un short no cabria y daria overflow (cosa que depende del lenguaje y la implementacion del lenguaje se va a comportar de una forma distinta)...
    Igual él tiene que dar vuelta los bits, no los dígitos decimales, o sea que usaría 2 como cociente (o, mejor aún, >> y &) y no tendría overflow.
    Me gusta este mensaje
  • #7 Re: De decimal a binario

    Originalmente publicado por pangus Ver mensaje
    Igual él tiene que dar vuelta los bits, no los dígitos decimales, o sea que usaría 2 como cociente (o, mejor aún, >> y &) y no tendría overflow.
    No entiendo, pangus yo puse un pseudocodigo para invertir numeros, ahora si ese numero en total representa la configuracion binaria de otro numero, no importa, se va a seguir invirtiendo de la misma forma...

    Ahora si, lo que decis de usar el modulo de la division entera por 2 para ir calculando los divitos binarios y luego ir invirtiendolos con eso de NUMEROINVERTIDO = NUMEROINVERTIDO * 10 + DIGITO... estaria bien porque ahora DIGITO, pasaria a ser 1 o 0 depende de lo que de la division entera por 2...

    Saludos
    Pablo
    Me gusta este mensaje
  • #8 Re: De decimal a binario

    Originalmente publicado por ExtrañoInocente Ver mensaje
    No entiendo, pangus yo puse un pseudocodigo para invertir numeros, ahora si ese numero en total representa la configuracion binaria de otro numero, no importa, se va a seguir invirtiendo de la misma forma...
    Lo que se invierte son los dígitos, no existe "invertir un número" (salvo al referirse a 1/n), y por lo tanto el resultado depende de la base en que el número esté representado.

    4 en base 10, invertido, es 4.
    4 en base 2, invertido, es 1 (100 → 001).
    Me gusta este mensaje
  • #9 Re: De decimal a binario

    Les cuento, el codigo en el primer mensaje se compilo y ejecuto perfectamente en otra pc, en la que estoy usando actualemnte se cuelga :S , y eso que uso el mismo en ambas ( dev-c++ ) .

    Con respecto a lo de invertir el numero lo que han posteado ( que se los agradezco ) no me serviria porque lo que arroja por pantalla mi fuente es unas lineas continuas de "printf" .

    Tal vez necesite armar el programa de otra manera, yo se que de decimal a binario se pasa dividiendo por 2 y tomando el resto. :s

    Saludos.
    Me gusta este mensaje
  • #10 Re: De decimal a binario

    Les comento, ya logre solucionar el problema de que se me colgaba la maquina porque reescribi el codigo, este es el nuevo:

    #include<stdio.h>
    main()
    {
    int a=0;
    int b=0;
    printf("Inserte un numero: ");
    scanf("%d",&a);
    for(a;a!=0;printf("%d",b))
    {
    b=a%2;
    a=a/2;
    }
    getchar();
    getchar();
    }

    El problema con esto es que cuando imprime el numero, el binario me queda al reves. Pero no puedo aplicar lo que explicaron antes porque el numero que se imprime en realidad son cadenas continuas de printf ( como se ve en la tercera parte del for ), como podria para invertir ese numero ?
    Me gusta este mensaje
1 2 >
Estás en: Inicio >> Foros >> Informática >> Programación


Estadísticas del tema
  • 12 RESPUESTAS
  • 5129 VISTAS
  • 8 USUARIOS RESPONDIERON
 
Ir arriba
Contacto | Acerca de | Ayuda | Términos Legales | privacidad | Pautas de convivencia | Mapa de los foros | TrabajÁ con nosotros
©2008 Psicofxp.com S.A. - Todos los derechos reservados
Certifica IAB