# Aufgaben zur UE
Einführung in die Programmierung

Legen Sie alle Programme so aus, dass der Benutzer die geforderten Berechnungen beliebig oft durchführen kann, ohne das Programm jedes mal neu zu starten.
Anspruchsvollere Aufgaben sind mit einem Stern gekennzeichnet.

##
3. Anweisungen

Erstellen Sie C++ Programme für folgende Problemstellungen:

1. Sortieren Sie 3 Zahlen ohne Verwendung von logischen Operatoren.

2. Schreiben Sie ein Programm, das eine vierstellige ganze Zahl einliest und ihre sprachliche Repräsentation ausgibt.
   z.B. Eingabe 1723
   Ausgabe eins-sieben-zwei-drei.

3. Schreiben Sie ein Programm zur Lösung der quadratischen Gleichung x2+px+q=0 (Achtung: eventuelle komplexe Lösungen beachten)
   Anmerkung: In der Klassenbibliothek math.h befindet sich die Funktion sqrt(), die zur Berechnung der Quadratwurzel dient. Der übergebene Wert sollte nicht kleiner als 0 (Null) sein, sonst wird ein Fehler ausgelöst.

4. Berechnen Sie die Fakultät von n mit Hilfe einer Schleife

5. Erstellen Sie die Additionstabelle und die Multiplikationstabelle modulo n. Die Ausgabe für n=4 könnte zum Beispiel so aussehen:
   Addition:
   0 1 2 3
   1 2 3 0
   2 3 0 1
   3 0 1 2
   Multiplikation:
   0 0 0 0
   0 1 2 3
   0 2 0 2
   0 3 2 1

6. Lesen Sie 2 Intervallgrenzen und danach beliebig viele Zahlen (Abschluss mit 0) ein, und geben Sie aus, wie viele Zahlen kleiner als die untere Intervallgrenze, wie viele im Intervall und wie viele größer als die obere Intervallgrenze waren.

7. Überprüfen Sie, ob die Folge
   ni+1 = ni / 2 für gerade ni
   ni+1 = 3ni + 1 für ungerade ni
   für unterschiedliche (beliebige) positive Startwerte n1 immer den Wert 1 erreicht.

8. Bestimmen Sie, ob eine eingegebene natürliche Zahl eine Primzahl ist.

9. Bestimmen Sie den Wert
   (also 11+22+33+...+nn) für eine beliebige natürliche Zahl n.

10. Lesen Sie beliebig viele Zahlen (Abschluss mit 0) ein, und geben Sie das Maximum, das Minimum und den Mittelwert der eingegebenen Werte aus.

11. Schreiben Sie ein Programm, das einen ganz simplen Taschenrechner simuliert. Eingegeben wird ein mathematischer Ausdruck, der Zahlen und die binären Operatoren +,-,* und / enthält. Der Ausdruck wird durch ein Rufzeichen abgeschlossen. Das Programm soll das Ergebnis des Ausdrucks berechnen, wobei die Operationen strikt von links nach rechts durchzuführen sind. (Das heißt, es gilt nicht Punkt- vor Strichrechnung! Vgl. dazu Bsp. 15)
    z.B. Eingabe: 2+3-4/2*3-1! Ausgabe: 0.5

12. Schreiben Sie ein Programm, das eine natürliche Zahl einliest und die größte Zweierpotenz ausgibt, die die eingelesene Zahl teilt.

    Eingabe | Ausgabe
    17 | 1
    48 | 16
    1024 | 1024

13. Eine Zahl heißt perfekt, wenn die Summe ihrer echten Teiler (das sind alle Teiler, die kleiner als die Zahl selbst sind) gleich groß ist, wie die Zahl. Zum Beispiel ist 6 eine perfekte Zahl, da 6=1*2*3 und 1+2+3=6. Falls die Summe der echten Teiler kleiner ist als die Zahl, heißt die Zahl defizient. Falls die Summe der echten Teiler größer ist als die Zahl, heißt die Zahl abundant. Schreiben Sie ein Programm, das eine natürliche Zahl einliest und ausgibt, ob die eingelesene Zahl perfekt, defizient oder abundant ist.

    Eingabe | Ausgabe | Begründung
    5 | defizient | 1 ist einziger echter Teiler
    6 | perfekt | 1+2+3=6
    12 | abundant | 1+2+3+4+6=16>12

14. * Schreiben Sie ein Programm, das beliebig viele ganze Zahlen (Abschluss mit 0) einliest und die Anzahl der Inversionen in der eingegebenen Zahlenliste ausgibt. Als Inversionen für eine bestimmte Zahl (Ausgangszahl) der Liste bezeichnen wir alle Zahlen, die in der Liste nach der Ausgangszahl stehen und kleiner sind als diese. Zum Beispiel:
    Eingabe: 5 3 2 7 8 Ausgabe: 3
    Da 3 hinter 5 steht, 2 hinter 5 steht und 2 hinter 3 steht.

15. * Wie Beispiel 2 allerdings für beliebige reelle Zahlen.
    z.B. Eingabe 17.23
    Ausgabe: eins-sieben-komma-zwei-drei.