#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed Jan 17 14:00:53 2018

@author: troll
"""

# 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,zaehler, nenner):
        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
    
    ''' Diese beiden Methoden dienen dazu, dass Sie den Bruch sehen wenn die
    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 (dieses NaN ist NICHT das NaN aus NumPy).
    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
'''