From 4c75a67651e246e91f7fb534194ff80832f04f24 Mon Sep 17 00:00:00 2001 From: Shubham Saini <42760891+anon6405@users.noreply.github.com> Date: Fri, 4 Oct 2019 14:34:44 +0530 Subject: [PATCH] Create hexal_to_octal.c --- conversions/hexal_to_octal.c | 134 +++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 conversions/hexal_to_octal.c diff --git a/conversions/hexal_to_octal.c b/conversions/hexal_to_octal.c new file mode 100644 index 00000000..d60d6a43 --- /dev/null +++ b/conversions/hexal_to_octal.c @@ -0,0 +1,134 @@ +** + * C program to convert Hexadecimal to Octal number system + */ + +#include + +int main() +{ + char hex[17]; + long long octal, bin, place; + int i = 0, rem, val; + + /* Input hexadecimal number from user */ + printf("Enter any hexadecimal number: "); + gets(hex); + + octal = 0ll; + bin = 0ll; + place = 0ll; + + /* Hexadecimal to binary conversion */ + for(i=0; hex[i]!='\0'; i++) + { + bin = bin * place; + + switch(hex[i]) + { + case '0': + bin += 0; + break; + case '1': + bin += 1; + break; + case '2': + bin += 10; + break; + case '3': + bin += 11; + break; + case '4': + bin += 100; + break; + case '5': + bin += 101; + break; + case '6': + bin += 110; + break; + case '7': + bin += 111; + break; + case '8': + bin += 1000; + break; + case '9': + bin += 1001; + break; + case 'a': + case 'A': + bin += 1010; + break; + case 'b': + case 'B': + bin += 1011; + break; + case 'c': + case 'C': + bin += 1100; + break; + case 'd': + case 'D': + bin += 1101; + break; + case 'e': + case 'E': + bin += 1110; + break; + case 'f': + case 'F': + bin += 1111; + break; + default: + printf("Invalid hexadecimal input."); + } + + place = 10000; + } + + place = 1; + + /* Binary to octal conversion */ + while(bin > 0) + { + rem = bin % 1000; + + switch(rem) + { + case 0: + val = 0; + break; + case 1: + val = 1; + break; + case 10: + val = 2; + break; + case 11: + val = 3; + break; + case 100: + val = 4; + break; + case 101: + val = 5; + break; + case 110: + val = 6; + break; + case 111: + val = 7; + break; + } + + octal = (val * place) + octal; + bin /= 1000; + + place *= 10; + } + + printf("Hexadecimal number = %s\n", hex); + printf("Octal number = %lld", octal); + + return 0; +}