You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

135 lines
3.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Übungen_LF6_WinFormanwendung
{
class Bruchzahl : IComparable
{
public int nenner {
get
{
return this.nenner;
}
set
{
if (value == 0)
throw new DivideByZeroException();
else
this.nenner = value;
}
}
public int zaehler { get; set; }
public Bruchzahl()
{
nenner = 1;
zaehler = 1;
}
public Bruchzahl(int z, int n)
{
nenner = n;
zaehler = z;
}
public double dezWert()
{
double z = zaehler;
double n = nenner;
return z / n;
}
/*
public void add(Bruchzahl b)
{
}
*/
public void gibZaehlerNenner(out int z, out int n)
{
z = zaehler;
n = nenner;
}
public override string ToString()
{
return zaehler +" / " + nenner;
}
public Bruchzahl kuerzen()
{
int ggtNenner = ggT(zaehler, nenner);
Bruchzahl ergebnis = new Bruchzahl();
ergebnis.zaehler /= ggtNenner;
ergebnis.nenner /= ggtNenner;
return ergebnis;
}
public int ggT(int z, int n)
{
if (z == 0 || n == 0)
throw new DivideByZeroException();
int rest = 0;
while (n > 0)
{
rest = z % n;
z = n;
n = rest;
}
return z;
}
public int CompareTo(object obj)
{
Bruchzahl objBruch = (Bruchzahl)obj;
if (objBruch == null)
return 1;
double objDouble = objBruch.dezWert();
double thisDouble = this.dezWert();
return thisDouble.CompareTo(objDouble);
}
public static Bruchzahl operator +(Bruchzahl bruch1, Bruchzahl bruch2)
{
Bruchzahl ergebnis = new Bruchzahl();
ergebnis.zaehler = bruch1.zaehler * bruch2.zaehler + bruch2.zaehler * bruch1.nenner;
ergebnis.nenner = bruch1.nenner * bruch2.nenner;
return ergebnis;
}
public static Bruchzahl operator -(Bruchzahl bruch1, Bruchzahl bruch2)
{
Bruchzahl ergebnis = new Bruchzahl();
ergebnis.zaehler = bruch1.zaehler * bruch2.zaehler - bruch2.zaehler * bruch1.nenner;
ergebnis.nenner = bruch1.nenner * bruch2.nenner;
return ergebnis;
}
public static Bruchzahl operator *(Bruchzahl bruch1, Bruchzahl bruch2)
{
Bruchzahl ergebnis = new Bruchzahl();
ergebnis.zaehler = bruch1.zaehler * bruch2.zaehler ;
ergebnis.nenner = bruch1.nenner * bruch2.nenner;
return ergebnis;
}
public static Bruchzahl operator /(Bruchzahl bruch1, Bruchzahl bruch2)
{
if (bruch2.zaehler == 0)
throw new DivideByZeroException();
Bruchzahl ergebnis = new Bruchzahl();
ergebnis.zaehler = bruch1.zaehler * bruch2.nenner ;
ergebnis.nenner = bruch1.nenner * bruch2.zaehler;
return ergebnis;
}
}
}