/*
FH Giessen Friedberg                                                                                                                         Uebung 08
C++
Prof. Dr. Henrich
 

Ue1
Erstellen Sie eine Klasse Vektor und eine Klasse Matrix so, daß folgendes ausführbar ist:

 void main(){                    Ausgaben;
      Matrix m;
      m.show();                     Matrix   1 2
                                                        2 4
      Vektor v;
      v.show();                      Vektor   7 8
      (m*v).show();               Produkt  23  46
}
Die Vektordimension = 2 (fest) und die Matrix hat prinzipiell 2 Zeilen und 2 Spalten.
Alle Datenelemente sind privat, wobei auch keine get- und set-Methoden verwendet werden
sollen. Zugriffsrechte können über friend-Methoden
(keine friend-Klasse) falls notwendig vergeben werden.

Ue2
Implementieren Sie den benutzerdefinierten Datentyp der komplexen Zahlen my_compl
mit folgenden Eigenschaften:
- Implementieren Sie die Addition (nicht +=) als freien Operator
- Implementieren Sie die Subtraktion (nicht -=)  als  Elementoperator
Erproben Sie die Klasse in der main-Fkt.
Seien c1,c2 komplexe Zahlen dann: (c1+c2).show() und (c1-c2).show() sollten Ergebnis ausgeben

Ue3
Implementieren Sie den Datentyp Modulo_5 einschliesslich des PostixOperators ++(freier
Operator) und Präfix--(Elementoperator). Legen Sie Instanzen an und überprüfen Sie die
implementierten Operatoren insbesondere im Hinblick auf die Prä- und Postfix-Verwendung

Folgendes Beispiel zeigt das unterschiedliche Überladen von Prä- und Postfixoperator
 class A{
 public:
  A operator++(){cout<<"Praefix"; return A();}
  A operator++(int){cout<<"Postfix";return A();}    // zur Unterscheidung wird künstlich ein Parameter int hinzugefügt
 };

 void main(){
  A a;
  ++a; // Praefix Aufruf:   a.operator++()
  a++; // Postfix Aufruf:   a.operator++(int)
 }

Ue4
In main() sei int i = 1; gegeben
Schreiben Sie 2 Varianten einer Funktion change, die in main() aufgerufen wird und diesen Wert ändert.
*/