Aufgaben

  1. Quadratische Gleichung
    Erstellen Sie ein Programm zur Lösung der quadratischen Gleichung

    \begin{displaymath}A   x^2 + B   x + C = 0 \end{displaymath}

    basierend auf obigem Beispiel root

  2. Idiotensichere Fakultät
    Modizfizieren Sie ihre Funktionen zur Berechnung der Fakultät so, dass kein Überlauf mehr auftreten kann, d.h. lösen Sie eine exception aus
    throw ("Number too large")
    wenn der Wert zu gross wird.

    Hinweis: Mit LONG_MAX oder DBL_MAX (definiert in limits.h bzw. float.h) kann man die Grenzen der Zahlenbereiche abfragen. Jetzt muss man nur noch überlegen wie man's programmiert ohne dass zunächst die Grenze überschritten wird.

  3. Template
    Falls Sie Templates zum erstenmal sehen sollten Sie erstmal mit Funktionen üben:
    Schreiben Sie Template Funktionen um $x^2$, $x^n$, Min(), Abs() zu berechnen.

  4. Zahlen sortieren
    In der Datei numbers.dat finden Sie eine Liste mit 100 Fließkommazahlen.

    Ein Beispiel zum Einlesen aus Datei ist in iovec.cpp .

  5. Poker simulieren
    Mit vector und dem random_shuffle Algorithmus kann man leicht Spiele simulieren, und damit die Wahrscheinlichkeit für bestimmte Kombinationen abschätzen (ohne sich in den Feinheiten der Kombinatorik zu verirren). Simulieren Sie z.B. das Pokerspiel, was ist die Wahrscheinlichkeit ein Full-House auf die Hand zu bekommen ?

    Lösungsbeispiel: (html, source),

  6. Function Object zum Dreier-Vektor sortieren
    Container und Algorithmen funktionieren auch für eigene Klassen/Objekte. Testen Sie das speichern in vector und sortieren mit zufällig erzeugten Dreier-Vektoren:


    
    #include <vector>  // vector headers
    #include <cstdlib>
    #include "myvec.hxx"
    using namespace std;
    int main()
    {
       vector<My3Vector> vvec; // empty <My3Vector> vector
       for ( int i = 0; i<200; i++ ) {
         // create random three-vectors
         My3Vector p( rand()*10./(RAND_MAX+1.0),
              rand()*10./(RAND_MAX+1.0),
              rand()*10./(RAND_MAX+1.0) );
         // add My3Vector at the end of the vector
         vvec.push_back( p );
       }
       // sort My3Vectors
       // ...
       // output
    
    

    Erstmal das direkte sortieren ausprobieren, dann Function Object benutzen und nach x oder y Komponente sortieren.
    (My3Vector Header myvec.hxx und code myvec.cxx.)


  7. Vorwahl-Map
    In der Datei vorwahl.txt stehen alle Vorwahlen und zugehörige Orte in Deutschland. Lesen Sie die ein, speichern Sie's in einer Map und machen damit ein kleines Programm das zu einer gegebenen Vorwahl den Ort ausgibt, und umgekehrt.

    Ein Beispiel zum Zeilen-weisen Einlesen aus Datei ist in vorwahl.cpp .

  8. Genom Projekt
    Eine DNA Sequenz kann als Array von N Char Werten dargestellt werden (N sehr gross). Das Problem ist nun wiederkehrende Strukturen zu finden, d.h. Patterns der Länge M, wobei M fix und klein ist. In der Datei genom.txt finden Sie einen Abschnitt einer solchen DNA Sequenz. Überlegen Sie Algorithmen um signifikant häufige Patterns für vorgegebene Länge M zu finden.

    Lösungsbeispiel: (html, source),

    Human Genome Project: html


GDuckeck 2019-08-01