TransWikia.com

¿Como hago para imprimir una tabla con los equivalentes decimal y binario?

Stack Overflow en español Asked by El_Enzo on November 15, 2021

El código ya lo tengo hecho, es el siguiente:

#include <stdio.h>
#include <stdlib.h>

int main()
{
int decimal, b[100], i, j, n;
printf("DECIMALttBINARIOn0tt0n");
for(decimal=1; decimal<=19; decimal++)
{
    printf("%dn", decimal);
}

printf("tt");
for(decimal=1; decimal<=19; decimal++)
{
    i=0;
    n=decimal;
    while(n>0)
    {
        b[i]=n%2;//b[0]=0, b[1]=1
        n=n/2;//decimal=1, decimal=0
        i++;//i=1, i=2
    }
    for(j=i-1; j>=0; j--)
    {
        printf("%d", b[j]);
    }
    printf("n");
}
return 0;
}

Quisiera imprimir la tabla equivalente de la siguiente forma:

introducir la descripción de la imagen aquí

Pero lo que logro únicamente con mi código es que los números binarios se impriman debajo del decimal y no debajo del binario.

One Answer

Pero lo que logro únicamente con mi código es que los números binarios se impriman debajo del decimal y no debajo del binario.

Lo que pasa es que las dos tabulaciones que haces solo afectan al primer número que se imprime en la iteración: printf("tt");. Por cada iteración del ciclo estás cambiando la linea de impresión: printf("n");

Necesitas imprimir el número decimal y su equivalente a binario en la misma linea. Para esto tienes que imprimir en el mismo ciclo ambos valores. Esto se hace ubicando el ciclo for que imprime los números binarios dentro del que imprime los decimales.

int main(void) {
    int decimal;
    int b[100]; 
    int i,j,n;

    printf("DECIMALttBINARIOn0tt0n");

    for(decimal = 1;decimal <= 19;decimal++) {
        i = 0;
        n = decimal;

        while(n > 0) {
            b[i] = n % 2;//b[0]=0, b[1]=1
            n = n / 2;//decimal=1, decimal=0
            i++;//i=1, i=2
        }

        printf("%dtt",decimal);
        for(j = (i - 1);j >= 0;j--) {
            printf("%d",b[j]);
        }

        printf("n");
    }

    return 0;
}

¿Por qué se debe de hacer esto?

Hay que ponerle atención a estas lineas

printf("%dtt",decimal);
for(j = (i - 1);j >= 0;j--) {
    printf("%d",b[j]);
}

printf("n");

La primera linea imprime el número decimal, además de dos tabulaciones para luego imprimir el binario. El ciclo for va a imprimir todos los números del array que almacena el número binario. Finalmente se cambia de linea con: "n", y luego sigue la otra iteración

Decimal|Tabulación|Tabulación|Binario|Cambio de linea

Por esto mismo se obtiene

DECIMAL         BINARIO
0               0
1               1
2               10
3               11
4               100
5               101
6               110
7               111
8               1000
9               1001
10              1010
11              1011
12              1100
13              1101
14              1110
15              1111
16              10000
17              10001
18              10010
19              10011

Espero haberte ayudado, saludos.

Answered by user166844 on November 15, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP