Exponential notation of a decimal number
Given a positive decimal number, find the simple exponential notation (x = a·10^b) of the given number.
Examples:
Input : 100.0 Output : 1E2 Explanation: The exponential notation of 100.0 is 1E2. Input :19 Output :1.9E1 Explanation: The exponential notation of 16 is 1.6E1.
Approach:
The simplest way is to find the position of the first non zero digit and the position of the dot. The difference between that positions is the value of b (if the value is positive you should also decrease it by one).
Below is the implementation of the above approach:
// C++ code to find the exponential notation #include <bits/stdc++.h> using namespace std; // function to calculate the exponential // notation void FindExponent( char s[], int n) { int i, j, b, c; for (i = 0; s[i] == '0' || s[i] == '.' ; i++) ; for (j = n - 1; s[j] == '0' || s[j] == '.' ; j--) ; c = find(s, s + n, '.' ) - s; putchar (s[i]); if (i != j) putchar ( '.' ); for ( int k = i + 1; k <= j; k++) if (s[k] != '.' ) putchar (s[k]); if (i < c) b = c - i - 1; else b = c - i; if (b) printf ( "E%d" , b); } // main function int main() { char s[] = "100" ; int n = strlen (s); FindExponent(s, n); } |
Output:
1E2
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.