Buscar

um algoritmo que realize a conversão entre sistemas numéricos

Um problema típico em ciência da computação consiste em converter um número da sua forma decimal para a forma binária. Por exemplo, o número 12 tem sua representação binária igual a 1100. A conversão entre sistemas numéricos é feita com base em algumas regras e serve para que se obtenha o valor de um elemento no sistema numérico mais adequado a cada situação. Entre os sistemas numéricos mais utilizados na computação, há o binário, decimal, octal e hexadecimal. Cada um destes apresenta sua própria faixa de valores possíveis, e cada um possui uma aplicação especifica dentro da ciência da computação. Você deve elaborar um algoritmo que realize a conversão entre sistemas numéricos. O programa deve receber um número em um sistema escolhido e realizar a mudança para outro sistema escolhido. O programa deve abordar os quatro sistemas numéricos descritos no enunciado. Utilize funções e/ou procedimentos com passagem de parâmetros em sua solução.

💡 5 Respostas

User badge image

Joelson Cruz

Boa noite Rafael Silva beleza??

Em resposta ao seu post eu desenvolvi um script em php e html para resolver boa parte do problema proposto.

Ele faz o seguinte: O usuário digita um valor em decimal e escolhe pra qual forma deseja converter.

 

HTML

<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Converter</title>

<!-- Estilo -->
<link href="_css/estilo.css" rel="stylesheet">

<body>
<div>
<form method="get" action="converter.php">
Número:
<input type="number" name="num"/><br>
<fieldset><legend>Converter valores</legend>
<input type="radio" name="oper" id="binario" value="1" checked>
<label for="binario">Binário</label>
<input type="radio" name="oper" id="decimal" value="2">
<label for="decimal">Decimal</label>
<input type="radio" name="oper" id="octal" value="3">
<label for="octal">Octal</label>
<input type="radio" name="oper" id="hexadecimal" value="4">
<label for="hexadecimal">hexadecimal</label>

</fieldset>

<input type="submit" class="botao" value="calcular"/>
</form>
</div>


</body>

</html>

 

 

PHP

<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Switch</title>

<!-- Estilo-->
<link href="_css/estilo.css" rel="stylesheet">
<body>
<div>
<?php
$numero = isset($_GET["num"]) ? $_GET["num"] : 0;
$operador = isset($_GET["oper"]) ? $_GET["oper"] : 1;


switch ($operador) {
case 1:
$r = decbin($numero);
break;
case 2:
$r = $numero;
break;
case 3:
$r =decoct($numero);
break;
case 4:
$r= dechex($numero);
}
echo"O resultado da operação solicitada foi <span class='foco'>$r</span>";

?>
<br><br><a href="javascript: history.go(-1)" class="botao">Voltar</a>

</div>

</body>

</html>

 

É isso pessoal. Espero ter ajudado em alguma coisa.

0
Dislike0
User badge image

Rafael Silva

obrigado !

0
Dislike0
User badge image

Andre Smaira

Para responder essa pergunta devemos colocar em prática nosso conhecimento sobre Algoritmo e Estrutura de Dados.


#include "stdio.h"

#include "stdlib.h"

#include "conio.h"

void decimal_to_octal(int num) {

int result[15] = {};

int i = 0, j = 0;

if(num >= 8) {

printf("Decimal: %d -> Octal: ", num);

while(num >= 8) {

result[i++] = num % 8;

num = num ⁄ 8;

}

result[i] = num;

⁄⁄ Imprimindo o valor invertido sem os zeros à esquerda

for(j = i; j >= 0; j--) {

printf("%d", result[j]);

}

printf(" ");

} else {

printf("Decimal: %d -> Octal: %d ", num, num);

}

}

void decimal_to_binario(int num) {

char b[20];

itoa(num, b,2); ⁄⁄Converte para base 2

printf(" O numero %d em binario e: %s",a,);

}

void decimal_to_hexa(int num){

int q, resto, i;

q = num ⁄ 16;

resto = num % 16;

numEntrada ⁄= 16;

switch(resto){

case 10:

strcat(hexa, "A");

break;

case 11:

strcat(hexa, "B");

break;

case 12:

strcat(hexa, "C");

break;

case 13:

strcat(hexa, "D");

break;

case 14:

strcat(hexa, "E");

break;

case 15:

strcat(hexa, "F");

break;

case 16:

strcat(hexa, "G");

break;

default:

sprintf(getInt, "%i", resto);

strcat(hexa, getInt);

}

while(q != 0);

for(i=strlen(hexa); i >= 0; i--){

printf("%c", hexa[i]);

}

}

int main(void) {

int num, a;

printf("Digite um numero em decimal: ");

scanf("%d",&num);

printf("Escolha a base que deseja que o numero seja convertido ");

printf("1_ Binario. ");

printf("2_ Octal. ");

printf("3_ Hexadecimal. ");

scanf("%d",&a);

if(a==1){

decimal_to_binario(num);

}

else if(a==2){

decimal_to_octal(num);

}

else if(a==3){

decimal_to_hexa(num);

}

else{

printf("Não existe o código digitado.");

}

return 0;

}


Portanto, o algoritmo acima apenas permite que o usuário converta de decimal para as outras 3 bases. Porém, caso queira que uma base seja escolhida para ser convertida para outra base de desejo do usuário, recomenda-se converter o algarismo inserido pelo usuário e convertido para decimal e em seguida convertido para a base escolhida, pois assim o código não fica muito maior, facilitando na hora de programar.

0
Dislike0

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

✏️ Responder

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta

User badge image

Outros materiais