boa tarde galera, vi um desafio e resolvi fazer, porem não consigui acabar, eu tenho que fazer um codigo, sem usar uma função pronta que a entrada seja numeros decimais e a saida seja exadecimal
o mais dificil é saber como faz a conversão isso eu já descrobri, só não consigui por no codigo.
a regra de negocio é a seguinte:
o numero decimal 50 para virar exadecimal é feito a seguinte conta
50/16 = 3,125
pega a parde inteira 3 e guarda o resultado
e a parte decimal fica 0,125 * 16 = 2
junta-se a parte inteira com a parte decimal e o resultado é 32
mas sempre que dividir por 16 e a parte inteira for maior que 16 deve se dividir novamente e fazer o mesmo processo, ou seja usar recursividade
meu codigo é esse
<?
$numerodecimal = $_GET["numero"];
$conversao = 0; // falo que a variavel é numero
$numerodecimal = $numerodecimal / 1; // tranformo a variavel em inteiro
function decimal($numerodecimal) {
$conversao = $numerodecimal / 16; // divido o numero decimal por 16
$inteiro = intval($conversao); // pega somente a parte inteira do numero
$resto = ($inteiro - $conversao ); // pega somente a parte decimal do numero porem esse numero está negativo
$resto = $resto * - 1; // faz a parte decimal ficar positiva
$resultado2 = $resto * 16; // multiplica a parte decimal por 16
$resultado1 = $inteiro; // essa é a parte inteira que se for menor que 16 a conta acaba aqui mesmo
// mas se for maior que isso ela deve ser dividia novamente e faz o mesmo processo
// com a parte decimal etc...
switch ($resultado1) { // sempre que o resultado do inteiro ou da multiplicação da parte decimal for um numero
// entre 10 e 16 cada um tem uma letra de repredentação "10"=A, "11"=B, "12"=C, etc...
Pergunta
Rafaelflm
boa tarde galera, vi um desafio e resolvi fazer, porem não consigui acabar, eu tenho que fazer um codigo, sem usar uma função pronta que a entrada seja numeros decimais e a saida seja exadecimal
o mais dificil é saber como faz a conversão isso eu já descrobri, só não consigui por no codigo.
a regra de negocio é a seguinte:
o numero decimal 50 para virar exadecimal é feito a seguinte conta
50/16 = 3,125
pega a parde inteira 3 e guarda o resultado
e a parte decimal fica 0,125 * 16 = 2
junta-se a parte inteira com a parte decimal e o resultado é 32
mas sempre que dividir por 16 e a parte inteira for maior que 16 deve se dividir novamente e fazer o mesmo processo, ou seja usar recursividade
meu codigo é esse
<?
$numerodecimal = $_GET["numero"];
$conversao = 0; // falo que a variavel é numero
$numerodecimal = $numerodecimal / 1; // tranformo a variavel em inteiro
function decimal($numerodecimal) {
$conversao = $numerodecimal / 16; // divido o numero decimal por 16
$inteiro = intval($conversao); // pega somente a parte inteira do numero
$resto = ($inteiro - $conversao ); // pega somente a parte decimal do numero porem esse numero está negativo
$resto = $resto * - 1; // faz a parte decimal ficar positiva
$resultado2 = $resto * 16; // multiplica a parte decimal por 16
$resultado1 = $inteiro; // essa é a parte inteira que se for menor que 16 a conta acaba aqui mesmo
// mas se for maior que isso ela deve ser dividia novamente e faz o mesmo processo
// com a parte decimal etc...
switch ($resultado1) { // sempre que o resultado do inteiro ou da multiplicação da parte decimal for um numero
// entre 10 e 16 cada um tem uma letra de repredentação "10"=A, "11"=B, "12"=C, etc...
case 10:
$resultado1 = "A"; break;
case 11:
$resultado1 = "B"; break;
case 12:
$resultado1 = "C"; break;
case 13:
$resultado1 = "D"; break;
case 14:
$resultado1 = "E"; break;
case 15:
$resultado1 = "F"; break;
}
switch ($resultado2) {
case 10:
$resultado2 = "A"; break;
case 11:
$resultado2 = "B"; break;
case 12:
$resultado2 = "C"; break;
case 13:
$resultado2 = "D"; break;
case 14:
$resultado2 = "E"; break;
case 15:
$resultado2 = "F"; break;
}
print($resultado1);
print($resultado2);
}
decimal($numerodecimal);
?>
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.