Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <conio.h>
- #include <math.h>
- #include <locale.h>
- int decimalParaBinario(int dec);
- int contaAlgs(int num);
- int binarioParaDecimal(int bin);
- int decimalParaOctal(int dec);
- int binarioParaOctal(int bin);
- int inverteNumero(int num);
- int octalParaDecimal(int octal);
- int decimalParaHexadecimal(int dec);
- int main(){
- setlocale(LC_ALL, "Portuguese");
- int op, ent;
- char resp = 's';
- while(resp == 's' || resp == 'S')
- {
- printf("Selecione:\n");
- printf("1 - Binário para decimal\n"); //check
- printf("2 - Binário para octal\n");//check
- printf("3 - Binário para hexadecimal\n");
- printf("4 - Decimal para binário\n");//check
- printf("5 - Decimal para octal\n");//check
- printf("6 - Decimal para hexadecimal\n");
- printf("7 - Octal para binário\n");//check
- printf("8 - Octal para decimal\n");//check
- printf("9 - Octal para hexadecimal\n");
- printf("10 - Hexadecimal para binario\n");
- printf("11 - Hexadecimal para decimal\n");
- printf("12 - Hexadecimal para octal\n");
- scanf("%d", &op);
- switch(op)
- {
- case 1:
- printf("Digite o número em binário\n");
- scanf("%d", &ent);
- printf("Resultado = %d\n", binarioParaDecimal(ent));
- break;
- case 2:
- printf("Digite o número em binário:\n");
- scanf("%d", &ent);
- printf("Resultado = %d\n", binarioParaOctal(ent));
- break;
- case 4:
- printf("Digite o número em decimal\n");
- scanf("%d", &ent);
- printf("Resultado = %d\n", decimalParaBinario(ent));
- break;
- case 5:
- printf("Digite o número em decimal:\n");
- scanf("%d", &ent);
- printf("Resultado = %d\n", decimalParaOctal(ent));
- break;
- case 7:
- printf("Digite o numero em octal:\n");
- scanf("%d", &ent);
- printf("%d em octal = %d em binario\n", ent, decimalParaBinario(octalParaDecimal(ent)));
- break;
- case 8:
- printf("Digite o número em octal:\n");
- scanf("%d", &ent);
- printf("Resultado = %d\n", octalParaDecimal(ent));
- break;
- default:
- printf("Opção inválida\n");
- }
- printf("Deseja calcular novamente?(s/n)\n");
- fflush(stdin);
- scanf("%c", &resp);
- }
- getch();
- }
- int decimalParaBinario(int dec)
- {
- int i = 0, j, res = 0;
- if(dec == 0)
- res = 0;
- else if(dec == 1)
- res = 1;
- else if(dec == 2)
- res = 10;
- else if(dec == 3)
- return 11;
- else if(dec == 4)
- return 100;
- else
- {
- while(pow(2, i) < dec)
- {
- i++;
- }
- for(j = i - 1; j >= 0; j--)
- {
- if((double)dec >= pow(2, j))
- {
- dec = dec - (int)pow(2, j);
- res = (res * 10) + 1;
- }
- else
- {
- res = res * 10;
- }
- }
- }
- return res;
- }
- int contaAlgs(int num)
- {
- int cont = 0;
- while(num)
- {
- cont++;
- num /= 10;
- }
- return cont;
- }
- int binarioParaDecimal(int bin)
- {
- int aux = bin, i, res = 0;
- for(i = 0; i < contaAlgs(bin); i++)
- {
- if(aux % 10 == 1)
- res = res + pow(2, i);
- aux /= 10;
- }
- return res;
- }
- int decimalParaOctal(int dec)
- {
- int res = 0, i = 0;
- while(dec)
- {
- if(i == 0)
- res = dec % 8;
- else
- if(dec == 1)
- res = res * 10 + 1;
- else
- res = res * 10 + (dec % 8);
- i++;
- dec /= 8;
- }
- res = inverteNumero(res);
- return res;
- }
- int inverteNumero(int num)
- {
- int res = 0;
- while(num != 0)
- {
- res = res * 10;
- res = res + num % 10;
- num = num / 10;
- }
- return res;
- }
- int binarioParaOctal(int bin)
- {
- int res;
- res = binarioParaDecimal(bin);
- res = decimalParaOctal(res);
- return res;
- }
- int octalParaDecimal(int octal)
- {
- int res = 0, i = 0;
- while(octal > 0)
- {
- if(i == 0)
- res = octal % 10;
- else
- res += (octal % 10) * (int)pow(8, i);
- i++;
- octal /= 10;
- }
- return res;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement