Hackerrank Print Pretty Solution

# Hackerrank Print Pretty Solution

Your manager gave you a text file with many lines of numbers to format and print. For each row of  space-separated doubles, format and print the numbers using the specifications in the Output Format section below.

Input Format

The first line contains an integer, , the number of test cases.
Each of the  subsequent lines describes a test case as  space-separated floating-point numbers: , , and , respectively.

Constraints

• Each number will fit into a double.

Output Format

For each test case, print  lines containing the formatted , , and , respectively. Each , , and  must be formatted as follows:

1. : Strip its decimal (i.e., truncate it) and print its hexadecimal representation (including the  prefix) in lower case letters.
2. : Print it to a scale of  decimal places, preceded by a  or  sign (indicating if it's positive or negative), right justified, and left-padded with underscores so that the printed result is exactly  characters wide.
3. : Print it to a scale of exactly nine decimal places, expressed in scientific notation using upper case.

Sample Input

1
100.345 2006.008 2331.41592653498


Sample Output

0x64
_______+2006.01
2.331415927E+03


Explanation

For the first line of output,  (in reverse, ).
The second and third lines of output are formatted as described in the Output Format section.

### Solution in cpp

Approach 1.

		/* Enter your code here */
//cout << "Raw Input: " << A << " " << B << " " << C << endl;

printf("%#lx\n",(long int)A);
printf("%.*s%+.2f\n",15 - to_string((int)B).length() - 4,"_______________",B);
printf("%.9E\n",C);


Approach 2.

		std::cout << nouppercase << setw(0) << showbase << hex << (int64_t)A << endl;
std::cout << right << setw(15) << setprecision(2) << showpos << fixed << setfill('_') << B <<endl;
std::cout << uppercase << setprecision(9) << noshowpos << scientific << C << endl;

Approach 3.

		/* Enter your code here */

cout <<showbase << nouppercase << left << hex << long(A) << endl;
cout << setfill('_') << setw(15) << right << showpos << fixed << setprecision(2) << B << endl;
cout << noshowpos << scientific << setprecision(9) << uppercase << C << endl;