#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# Aufgabe 15
# Eigene Klasse: Brüche

# Rohversion

class Bruch():
    '''Die Klasse "Bruch" speichert Zähler und Nenner eines Bruches. Der Bruch
    wird automatisch gekürzt. Der Nenner ist >=0. Sollte der Nenner 0 sein,
    so wird 0/0 gespeichert und eine Warnung ausgegeben.
    Beispiel: Bruch(10,-4) <=> -5/2
    Die Rechenoperatoren +,-,*,/ funktionieren:
    a=Bruch(5,-2)
    b=Bruch(23,98)
    c=a*b
    Die Methode tofloat() gibt eine float-Repräsentation des Bruches zurück.
    '''
    
    # Initialisieren
    def __init__(self, zaehler, nenner):
        pass
        
    # Kürzen von Zähler und Nenner
    def kuerzen(self):
        pass
    
    # Methode zum Addieren (a+b)
    def __add__(self, other):
        pass
    
    # Methode zum Subtrahieren (a-b)
    def __sub__(self, other):
        pass
        
    # Methode zum Dividieren (a/b)
    def __truediv__(self, other):
        pass
    
    # Methode zum Multiplizieren (a*b)
    def __mul__(self, other):
        pass
    
    # In float umwandeln
    def tofloat(self):
        pass
    
    ''' Die folgenden beiden Methoden dienen dazu, dass Sie den Bruch sehen 
    wenn Sie ein Bruch-Objekt in die Konsole tippen oder print() übergeben.
    Bei 0/0 wird "NaN" zurückgegeben, um zu verdeutlichen, dass das nicht
    korrekt ist.
    Wenn die Attribute für Zähler und Nenner bei Ihnen "zaehler" und "nenner"
    heißen, müssen Sie hier nichts ändern.
    '''
    def __str__(self):
        return '{:d}/{:d}'.format(self.zaehler,self.nenner) if self.nenner>0 else 'NaN'
    
    def __repr__(self):
        return '{:d}/{:d}'.format(self.zaehler,self.nenner) if self.nenner>0 else 'NaN'

''' Auf folgende Fälle sollten Sie besonders achten:
a=Bruch(5,-2)
b=Bruch(8,4)
c=Bruch(0,9)
d=Bruch(7,0)
a*c
a/c
a+-*/d
'''
