public static void Main()
Zlomek zlomek1 = new Zlomek(10,5);
Console.WriteLine("zlomek1 = " + zlomek1);
Zlomek zlomek2 = new Zlomek(9,5);
Console.WriteLine("zlomek2 = " + zlomek2);
Zlomek zlomek3 = zlomek1 * zlomek2;
Console.WriteLine(zlomek1 + "*" + zlomek2 + " = " + zlomek3);
Zlomek zlomek4 = zlomek1 / zlomek2;
Console.WriteLine(zlomek1 + "/" + zlomek2 + " = " + zlomek4);
Zlomek zlomek5 = zlomek1 + zlomek2;
Console.WriteLine(zlomek1 + "+" + zlomek2 + " = " + zlomek5);
Zlomek zlomek6 = zlomek1 - zlomek2;
Console.WriteLine(zlomek1 + "-" + zlomek2 + " = " + zlomek6);
Zlomek zlomek7 = zlomek1.PrevedNaZakladni();
Console.WriteLine(zlomek1 + " = " + zlomek7 + " = " + zlomek7.VypisSlozeny());
public int Citatel {get;set;}
public int Jmenovatel {get;set;}
public Zlomek(int citatel, int jmenovatel)
public override string ToString()
return Citatel == 0 ? "0" : Citatel + "/" + Jmenovatel;
public static Zlomek operator*(Zlomek zlomek1, Zlomek zlomek2)
return new Zlomek(zlomek1.Citatel * zlomek2.Citatel, zlomek1.Jmenovatel * zlomek2.Jmenovatel);
public static Zlomek operator/(Zlomek zlomek1, Zlomek zlomek2)
return new Zlomek(zlomek1.Citatel * zlomek2.Jmenovatel, zlomek1.Jmenovatel * zlomek2.Citatel);
public static Zlomek operator+(Zlomek zlomek1, Zlomek zlomek2)
int lcm = CalcLCM(zlomek1.Jmenovatel, zlomek2.Jmenovatel);
return new Zlomek(zlomek1.Citatel * lcm / zlomek1.Jmenovatel + zlomek2.Citatel * lcm / zlomek2.Jmenovatel, lcm);
public static Zlomek operator-(Zlomek zlomek1, Zlomek zlomek2)
int lcm = CalcLCM(zlomek1.Jmenovatel, zlomek2.Jmenovatel);
return new Zlomek(zlomek1.Citatel * lcm / zlomek1.Jmenovatel - zlomek2.Citatel * lcm / zlomek2.Jmenovatel, lcm);
private static int CalcGCD(int a, int b)
return b == 0 ? a : CalcGCD(b, a%b);
private static int CalcLCM(int a, int b)
return a * b / CalcGCD(a,b);
public Zlomek PrevedNaZakladni()
return new Zlomek(Citatel / CalcGCD(Citatel, Jmenovatel), Jmenovatel / CalcGCD(Citatel, Jmenovatel));
public string VypisSlozeny()
int celeCislo = Citatel / Jmenovatel;
int novyCitatel = (Citatel - (celeCislo) * Jmenovatel);
slozeny = celeCislo.ToString();
return slozeny += " a " + novyCitatel + "/" + Jmenovatel;
else if(novyCitatel != 0)
return novyCitatel + "/" + Jmenovatel;