Consider a positive real number given in the form F.I (the float form). Treating F as the fractional part and I as the integral part, print the number in the form GH.J where H is a sequence of # (hashes) such that the decimal point always occurs at the sixth (6th) position from the left and G is I with only the significant digits, and J is F with only the significant digits.
Terminate your output with a newline. Assume that the fractional part F always has no leading zeros and both F and I have at most five (5) significant digits.
Terminate your output with a newline. Assume that the fractional part F always has no leading zeros and both F and I have at most five (5) significant digits.
Sample Input and Output:
Input:
10000.6660
Output:
6660#.1
Input:
990.0080
Output:
80###.99
Input:
101.11111
Output:
10000.6660
Output:
6660#.1
Input:
990.0080
Output:
80###.99
Input:
101.11111
Output:
11111.101
Input:
31644.0
Output:
#####.31644
Input:
31644.0
Output:
#####.31644
Solution:
#include <stdio.h> #include <stdlib.h> void main() { int end,start,start_temp; char c[20]; int i,j,flag=0; char out_end[10]; char out_start[10]; for(i=0;i<20;i++) c[i]='\0'; //Reading values scanf("%s",c); i=0; //Extracting starting digits for end while(c[i]!='.') { if(c[i]=='.' && flag==0) { flag=1; } else if(flag==0) out_end[i]=c[i]; i++; } out_end[i]='\0'; end=atoi(out_end); while(end%10==0) { end=end/10; } i=0; flag=0; //Extracting digits after decimal while(c[i]!='\0') { if(c[i]=='.' && flag==0) { flag=1; j=0; } else if(flag==1) { out_start[j]=c[i]; j++; } i++; } out_start[j]='\0'; start=atoi(out_start); i=0; start_temp=start; //Removing 0 while(start_temp/10>0) { start_temp/=10; i++; } i=5-i; //Output if(start>0) printf("%d",start); else i=6; for(j=1;j<i;j++) printf("#"); printf(".%d\n",end); }
No comments:
Post a Comment