69 lines
1.4 KiB
C#
69 lines
1.4 KiB
C#
|
/*
|
||
|
* 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
|