pesquisa

URI PROBLEMA 1193 - Conversão entre Bases SOLUÇÃO EM PYTHON

URI Online Judge | 1193

Conversão entre Bases

Por Neilor Tonin, URI  Brasil
Timelimit: 3
O professor de matemática de Juliano marcou uma prova cujo conteúdo será apenas conversão entre valores decimais, hexadecimais e binários. Uma das coisas mais complexas para Juliano é fazer estas conversões de base entre números. Por mais que estude, tem muita dificuldade para entender. Portanto, como você entende de computação e é amigo(a) de Juliano, ele solicitou a tua ajuda para que faça um programa que verifique se as conversões feitas por ele estão correta.

Entrada

A entrada contém vários casos de teste. A primeira linha da entrada contém um inteiro N, indicando o número de casos de teste que virão a seguir, um por linha. Cada caso de teste contém um valor X (X > 0) seguido de um texto Y com três caracteres, indicando se o valor X está no formato binário, decimal ou hexadecimal. Independente do formato, qualquer dos números deverá caber em um inteiro de 32 bits.

Saída

Para cada caso de teste, você deve apresentar o número de caso de teste seguido por duas linhas, que contém a conversão do valor fornecido para as outras duas bases. A sequência das bases de saída será sempre: decimal, hexadecimal (em minúsculo) e binário, ou seja deve-se respeitar esta ordem excluindo obviamente o formato de entrada.

Obs: 
deverá ser impressa uma linha em branco após cada caso de teste, inclusive após o último caso de teste.



# INÍCIO - CONVERÇÕES DE DECIMAIS
def dec_para_bin(num):
    num = int(num)
    valor = '' 
    resto = 0

    while True:
        resto = num // 2
        aux = num-(resto*2)
        valor+= str(aux)
        num = num // 2 
        if num <= 0:
            break

    print(valor[::-1],"bin")

def dec_para_hex(num):
    num = int(num)  
    print(hex(num)[2:],"hex")
# FIM - CONVERÇÕES DE DECIMAIS

# INÍCIO - CONVERÇÕES DE BINARIOS
def bin_para_dec(num):
    num = list(num)
    valor = 0

    for i in num:
        valor = valor * 2 + int(i)
    print(valor,"dec")

def bin_para_hex(num):
    # converte para decimal
    num = list(num)
    valor = 0
    for i in num:
        valor = valor * 2 + int(i)

    # converte de decimal para hexadecimal          
    print(hex(valor)[2:],"hex")
# FIM - CONVERÇÕES DE BINARIO

# INÍCIO - CONVERÇÕES DE HEXADECIMAL
def hex_para_dec(num):
    num = int(num, 16)
    print(num,"dec")

def hex_para_bin(num):
    num = int(num, 16)  
    dec_para_bin(num)
# FINAL - CONVERÇÕES DE HEXADECIMAL



vezes = int(input())
for i in range(vezes):
    num,base = input().split()
    print("Case %d:"%(i+1))
    if base == 'bin':
        bin_para_dec(num)
        bin_para_hex(num)

    elif base == 'dec':
        dec_para_hex(num)   
        dec_para_bin(num)

    elif base == 'hex':
        hex_para_dec(num)
        hex_para_bin(num)   
    print() 

Postar um comentário

0 Comentários