help me write a main application class FractionApplication.in this class,create
ID: 3626717 • Letter: H
Question
help me write a main application class FractionApplication.in this class,create three Fraction objects with values f1=<-1,2>,f2=<1,2> and f3=<5,10>.tets f1 equalsf2 and output to console.output f1*f2,f2-f1,&f1/f2.here is the program.
also whats the details of this overload operators >,<,-,*,/ and equals?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Fractions
{
/*
* models the behavior of the rational number
*/
public class Fraction
{
//Fields
private int numerator;
private int denominator = 1;
//constructors
public Fraction()
{
numerator = 0;
denominator = 1;
}
public Fraction(int numerator, int denominator)
{
if (denominator == 0)
{
throw new Exception("cannot have zero denominator.");
}
this.numerator = numerator;
this.denominator = denominator;
Reduce();
}
public Fraction(int numerator)
{
this.numerator = numerator;
denominator = 1;
}
//properties
public int Numerator
{
get { return numerator; }
set { numerator = value; Reduce(); }
}
public int Denominator
{
get { return denominator; }
set
{
if (value == 0)
{
throw new Exception("cannot have zero denominator");
}
denominator = value;
Reduce();
}
}
// static overload operators
public static bool operator ==(Fraction f1, Fraction f2)
{
return (f1.numerator == f2.numerator && f1.denominator == f2.denominator);
}
public static bool operator !=(Fraction f1, Fraction f2)
{
return !(f1 == f2);
}
public static bool operator >(Fraction f1, Fraction f2)
{
return (f2.numerator>f1.denominator);
}
public static bool operator <(Fraction f1, Fraction f2)
{
return (f1.denominator < f2.numerator);
}
public static Fraction operator +(Fraction f1, Fraction f2)
{
return (new Fraction(f1.numerator * f2.denominator + f2.numerator * f1.denominator, f1.denominator * f2.denominator));
}
public static Fraction operator -(Fraction f1, Fraction f2)
{
return (new Fraction(f1.numerator * f2.denominator - f2.numerator * f1.denominator, f1.denominator * f2.denominator));
}
public static Fraction operator *(Fraction f1, Fraction f2)
{
return (new Fraction(f1.numerator * f2.denominator * f2.numerator * f1.denominator, f1.denominator * f2.denominator));
}
public static Fraction operator /(Fraction f1, Fraction f2)
{
return (new Fraction(f1.numerator * f2.denominator / f2.numerator * f1.denominator, f1.denominator * f2.denominator));
}
//Queries related to comparison
public override bool Equals(object obj)
{
if (!(obj is Fraction))
{
return false;
}
Fraction My = (Fraction)obj;
return My.numerator == numerator &&
My.denominator == denominator;
}
public override int GetHashCode()
{
double value = (double)numerator / denominator;
return value.GetHashCode();
}
//Queries related to comparison
public override string ToString()
{
String sign = "";
if (numerator == 0)
{
return "0";
}
if (numerator * denominator < 0)
{
sign = "-";
}
if (denominator == 1)
{
return sign + Math.Abs(numerator);
}
return sign + Math.Abs(numerator) + "/" + Math.Abs(denominator);
}
//internal use
private Fraction Reduce()
{
int gcd = Math.Abs(numerator) > Math.Abs(denominator) ?
Math.Abs(denominator) : Math.Abs(numerator);
if (gcd == 0)
{
return this;
}
while (gcd !=1 &&
(numerator % gcd !=0 || denominator % gcd !=0))
{
//gcd;
}
numerator /=gcd;
denominator /=gcd;
return this;
}
static void Main(string[] args)
{
Fraction app = new Fraction();
}
}
}
Explanation / Answer
Fraction f1 = new Fraction(-1,2);
Fraction f2= new Fraction(1,2);
Fraction f3= new Fraction(5,10);
if(f1.Equals(f2))
Console.WriteLine("{0} and {1} area equal",f1,f2);
else
Console.WriteLine("{0} and {1} area not equal",f1,f2);
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.