Fraction To Decimal
#include <iostream>
#include <sstream>
using namespace std;
string frac_to_deci(int num, int den)
{
float div;
div = float(num) / den;
stringstream sso;
sso << div;
string str_div;
sso >> str_div;
string final_str;
for (int i = 0; i < str_div.length(); i++)
{
final_str += str_div[i];
if (str_div[i] == '.')
{
string second_final_str = final_str;
char ch = 0;
stringstream sso;
sso << str_div[i + 1];
string str;
sso >> str;
bool flag;
string sub_str = str_div.substr(i + 1, str_div.length());
if (sub_str.length() == 1)
{
return str_div;
}
for (int j = i + 1; j < str_div.length(); j++)
{
if (str_div[j] == str_div[j + 1])
{
ch = str_div[j];
flag = true;
break;
}
else
{
final_str += str_div[j];
}
}
if (!flag)
{
for (int j = i + 2; j < str_div.length(); j++)
{
if (str[0] == str_div[j])
{
return second_final_str + "(" + str + ")";
}
else
{
str += str_div[j];
}
}
}
if (ch == 0)
{
return final_str;
}
return final_str + "(" + ch + ")";
}
}
return str_div;
}
int main()
{
while (true)
{
int num, den;
cout << "\nEnter Numerator: ";
cin >> num;
cout << "Enter Denominator: ";
cin >> den;
string div = frac_to_deci(num, den);
cout << div;
}
return 0;
}
// Output
// Enter Numerator: 5
// Enter Denominator: 2
// 2.5
// Enter Numerator: 1
// Enter Denominator: 3
// 0.(3)
// Enter Numerator: 20
// Enter Denominator: 3
// 6.(6)
// Enter Numerator: 1
// Enter Denominator: 6
// 0.1(6)
// Enter Numerator: 2
// Enter Denominator: 7
// 0.285714
// Enter Numerator: 7
// Enter Denominator: 11
// 0.(63)
// Enter Numerator: 1
// Enter Denominator: 7
// 0.142857
// Enter Numerator: 2
// Enter Denominator: 11
// 0.(18)
// Enter Numerator: 13
// Enter Denominator: 21
// 0.619048
Comments
Post a Comment