Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

write a c program that converts an integer into another base. the input integer

ID: 638767 • Letter: W

Question

write a c program that converts an integer into another base. the input integer could be in decimal,octal,or hexadecimal. the output could be converted into either of base. a sample run is blow. the user's respone in again in boldface.

integer conversion program

Base of input (d=decimal, h=hexadecimal, o=octal) : d

Number :178

Base of output(d=decimal, h=hexadecimal, o=octal) : h

The integer 178 in decimal is equivalent to b2 in hexadecimal.

Another number? (Y/N) Y

Base of output(d=decimal, h=hexadecimal, o=octal) : o

Number: 423

Base of output(d=decimal, h=hexadecimal, o=octal) : d

The integer 423 in octal is equivalent to 275 in decimal.

Another Number (Y/N) N

Goodbye!

Explanation / Answer

#include #include #include int D2B(int); int D2O(int); int D2H(int); int B2O(int); int B2H(int); int O2H(int); int B2D(int); int O2D(int); main() { int ch,num; clrscr(); printf(" 1.Decimal 2 Binary."); printf(" 2.Decimal 2 Octal."); printf(" 3.Decimal 2 Hexa."); printf(" 4.Binary 2 Octal."); printf(" 5.Binary 2 Hexa."); printf(" 6.Octal 2 Hexa."); printf(" 7.Exit."); printf(" Enter your Choice:"); scanf("%d",&ch); switch(ch) { case 1: clrscr(); printf(" Enter any Decimal number:"); if(scanf("%d",&num)!=0 && num>0) D2B(num); //calling functionelse printf(" Not Allowed!!"); break; case 2: clrscr(); printf(" Enter any Decimal number:"); if(scanf("%d",&num)!=0 && num>0) D2O(num); //calling functionelse printf(" Not Allowed!!"); break; case 3: clrscr(); printf(" Enter any Decimal number:"); if(scanf("%d",&num)!=0 && num>0) D2H(num); //calling functionelse printf(" Not Allowed!!"); break; case 4: clrscr(); printf(" Enter any binary number:"); if(scanf("%d",&num)!=0)// && (num==0 || num==1)) B2O(B2D(num)); //calling functionelse printf(" Not Allowed!!"); break; case 5: clrscr(); printf(" Enter any binary number:"); if(scanf("%d",&num)!=0)// && (num==0 || num==1)) B2H(B2D(num)); //calling functionelse printf(" Not Allowed!!"); break; case 6: clrscr(); printf(" Enter any Octal number:"); if(scanf("%d",&num)!=0) D2H(O2D(num)); //calling functionelse printf(" Not Allowed!!"); break; case 7: exit(0); default: printf(" Enter proper Choice:"); break; } getch(); } int D2B(int dec) //decimal to binary { int bin=0,*bin_arr,count=0; while(dec>0) { bin=dec%2; dec/=2; *(bin_arr+count)=bin; count++; } printf(" BINARY="); while(count > 0) { --count; printf("%d",*(bin_arr+count)); } return 0; } int D2O(int dec) //decimal to octal { int oct=0,*oct_arr,count=0; while(dec>0) { oct=dec%8; dec/=8; *(oct_arr+count)=oct; count++; } printf(" OCTAL="); while(count > 0) { --count; printf("%d",*(oct_arr+count)); } return 0; } int D2H(int dec) //decimal to hexa { int hexa=0,*hexa_arr,count=0; while(dec>0) { hexa=dec%16; dec/=16; *(hexa_arr+count)=hexa; count++; } printf(" HEXA="); while(count > 0) { --count; switch(*(hexa_arr+count)) { case 10: printf("A"); break; case 11: printf("B"); break; case 12: printf("C"); break; case 13: printf("D"); break; case 14: printf("E");break; case 15: printf("F");break; default: printf("%d",*(hexa_arr+count)); break; } } return 0; } int B2D(int bin) //binary to decimal { int *bin_arr,count=0,dec=0,mod,idx=0; while(bin!=0) { mod=bin%10; bin/=10; *(bin_arr+count)=mod; count++; } while(count>0) { --count; bin=*(bin_arr+idx); dec+=bin * (int)(pow(2,idx)); idx++; } return dec; } int B2O(int dec) { int oct=0,*oct_arr,count=0; while(dec>0) { oct=dec%8; dec/=8; *(oct_arr+count)=oct; count++; } printf(" OCTAL="); while(count > 0) { --count; printf("%d",*(oct_arr+count)); } return 0; } int B2H(int dec) { int hexa=0,*hexa_arr,count=0; while(dec>0) { hexa=dec%16; dec/=16; *(hexa_arr+count)=hexa; count++; } printf(" HEXA="); while(count > 0) { --count; switch(*(hexa_arr+count)) { case 10: printf("A"); break; case 11: printf("B"); break; case 12: printf("C"); break; case 13: printf("D"); break; case 14: printf("E");break; case 15: printf("F");break; default: printf("%d",*(hexa_arr+count)); break; } } return 0; } int O2D(int oct) { int *dec_arr,count=0,dec=0,mod,idx=0; while(oct!=0) { mod=oct%10; oct/=10; *(dec_arr+count)=mod; count++; } while(count>0) { --count; oct=*(dec_arr+idx); dec+=oct * (int)(pow(8,idx)); idx++; } return dec; }