public class FractionCalculator
int firstNumberNumerator, secondNumberNumerator, firstNumberDenominator, secondNumberDenominator;
public static int gcd(int a, int b)
static string Add(int fnn, int fnd, int snn, int snd) {
int denominatorResult = snd * fnd;
int numeratorResult = fnn * snd + snn * fnd;
int div = gcd (numeratorResult, denominatorResult);
numeratorResult = numeratorResult / div;
denominatorResult = denominatorResult / div;
if (numeratorResult % denominatorResult == 0)
result = numeratorResult.ToString() + "/" + denominatorResult.ToString();
static string Sub(int fnn, int fnd, int snn, int snd) {
int denominatorResult = snd * fnd;
int numeratorResult = fnn * snd - snn * fnd;
int div = gcd (numeratorResult, denominatorResult);
numeratorResult = numeratorResult / div;
denominatorResult = denominatorResult / div;
if (numeratorResult % denominatorResult == 0)
result = numeratorResult.ToString() + "/" + denominatorResult.ToString();
static string Multiply(int fnn, int fnd, int snn, int snd) {
int numeratorResult = fnn * snn;
int denominatorResult = fnd * snd;
int div = gcd (numeratorResult, denominatorResult);
numeratorResult = numeratorResult / div;
denominatorResult = denominatorResult / div;
if (numeratorResult % denominatorResult == 0)
result = numeratorResult.ToString() + "/" + denominatorResult.ToString();
static string Divide(int fnn, int fnd, int snn, int snd) {
int numeratorResult = fnn * snd;
int denominatorResult = fnd * snn;
int div = gcd (numeratorResult, denominatorResult);
numeratorResult = numeratorResult / div;
denominatorResult = denominatorResult / div;
if (numeratorResult % denominatorResult == 0)
result = numeratorResult.ToString() + "/" + denominatorResult.ToString();
static string Pow(int fnn, int fnd, int secondNumber) {
int numeratorResult = Convert.ToInt32(Math.Pow(fnn , secondNumber));
int denominatorResult = Convert.ToInt32(Math.Pow(fnd , secondNumber));
int div = gcd (numeratorResult, denominatorResult);
numeratorResult = numeratorResult / div;
denominatorResult = denominatorResult / div;
if (numeratorResult % denominatorResult == 0)
result = numeratorResult.ToString() + "/" + denominatorResult.ToString();
static string Rad(int fnn, int fnd) {
double numeratorResult = Math.Pow(fnn , 0.5);
double denominatorResult = Math.Pow(fnd , 0.5);
string result = Convert.ToString(numeratorResult /denominatorResult);
public static void Main()
Console.WriteLine("starting...");
int fnn1 = Convert.ToInt32(fn1.Substring(0,fn1.IndexOf("/")));
int fnd1 = Convert.ToInt32(fn1.Substring(fn1.IndexOf("/")+1));
int snn1 = Convert.ToInt32(sn1.Substring(0,sn1.IndexOf("/")));
int snd1 = Convert.ToInt32(sn1.Substring(sn1.IndexOf("/")+1));
string[] test_result_one = { Add(fnn1, fnd1, snn1, snd1), Sub(fnn1, fnd1, snn1, snd1), Multiply(fnn1, fnd1, snn1, snd1), Divide(fnn1, fnd1, snn1, snd1), Pow(fnn1, fnd1, snn1), Rad(fnn1, fnd1)};
int fnn2 = Convert.ToInt32(fn2.Substring(0,fn2.IndexOf("/")));
int fnd2 = Convert.ToInt32(fn2.Substring(fn2.IndexOf("/")+1));
int snn2 = Convert.ToInt32(sn2.Substring(0,sn2.IndexOf("/")));
int snd2 = Convert.ToInt32(sn2.Substring(sn2.IndexOf("/")+1));
string[] test_result_two = { Add(fnn2, fnd2, snn2, snd2), Sub(fnn2, fnd2, snn2, snd2), Multiply(fnn2, fnd2, snn2, snd2), Divide(fnn2, fnd2, snn2, snd2), Pow(fnn2, fnd2, snn2), Rad(fnn2, fnd2)};
int fnn = Convert.ToInt32(fn.Substring(0,fn.IndexOf("/")));
int fnd = Convert.ToInt32(fn.Substring(fn.IndexOf("/")+1));
int snn = Convert.ToInt32(sn.Substring(0,sn.IndexOf("/")));
int snd = Convert.ToInt32(sn.Substring(sn.IndexOf("/")+1));
string[] test_result_one = { Add(fnn, fnd, snn, snd), Sub(fnn, fnd, snn, snd), Multiply(fnn, fnd, snn, snd), Divide(fnn, fnd, snn, snd), Pow(fnn, fnd, snn), Rad(fnn, fnd)};