/*
 * C# Program to Implement IComparable Interface
 */
using System;
class Fraction : IComparable
{
    int z, n;

    public Fraction(int z, int n)
    {
        this.z = z;
        this.n = n;
    }

    public static Fraction operator +(Fraction a, Fraction b)
    {
        return new Fraction(a.z * b.n + a.n * b.z, a.n * b.n);
    }

    public static Fraction operator *(Fraction a, Fraction b)
    {
        return new Fraction(a.z * b.z, a.n * b.n);
    }

    public int CompareTo(object obj)
    {
        Fraction f = (Fraction)obj;
        if ((float)z / n < (float)f.z / f.n)
            return -1;
        else if ((float)z / n > (float)f.z / f.n)
            return 1;
        else return 0;
    }

    public override string ToString()
    {
        return z + "/" + n;
    }
}

class Test
{

    static void Main(string[] arg)
    {
        Fraction[] a =
        {
            new Fraction(5,2),
            new Fraction(29,6),
            new Fraction(4,5),
            new Fraction(10,8),
            new Fraction(34,7)
        };
        Array.Sort(a);
        Console.WriteLine("Implementing the IComparable Interface in Displaying Fractions : ");
        foreach (Fraction f in a) Console.WriteLine(f + " ");
        Console.WriteLine();
        Console.ReadLine();
    }

}
/*

Implementing the IComparable Interface in Displaying Fractions :
4/5
10/8
5/2
29/6
34/7