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.

💡 4 Respostas

User badge image

RD Resoluções

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("\n");

} else {

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

}

}

void decimal_to_binario(int num) {

char b[20];

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

printf("\nO 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.

1
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