Fraction To Decimal

#include <iostream>

#include <sstream>

using namespace std;

string frac_to_deci(int numint den)
{
    float div;
    div = float(num) / den;
    stringstream sso;
    sso << div;
    string str_div;
    sso >> str_div;
    string final_str;
    for (int i = 0i < 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 + 1str_div.length());
            if (sub_str.length() == 1)
            {
                return str_div;
            }
            for (int j = i + 1j < 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 + 2j < 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 numden;
        cout << "\nEnter Numerator: ";
        cin >> num;
        cout << "Enter Denominator: ";
        cin >> den;
        string div = frac_to_deci(numden);
        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

Popular posts from this blog

Ticket Booking System

Student Database

Generalised Linked List