next up previous
Nächste Seite: Über dieses Dokument ...

4. Übung des Programmierpraktikums


Abgabetermin: 6. April 2009, 23:59 Uhr

Die Übungen sind grundsätzlich allein zu machen. Gruppenarbeit ist nicht erlaubt.
Abzugeben sind jeweils die sinnvoll dokumentierten Programmfiles (Files für Bsp. 5: bsp_5.cpp, bsp_5_fkt.cpp, bsp_5_fkt.hpp ) indem Sie diese in Ihr Verzeichnis im globalen Abgabeordner kopieren.

  1. Berechnen Sie die Taylorreihe für lnx, x $ \in$ ]0, 2] bis zum n-ten Glied
    lnx $\displaystyle \approx$ $\displaystyle \sum_{{k=1}}^{n}$(- 1)k+1$\displaystyle {\frac{{(x-1)^k}}{{k}}}$ (1)
      = $\displaystyle {\frac{{x-1}}{{1}}}$ - $\displaystyle {\frac{{(x-1)^2}}{{2}}}$ + $\displaystyle {\frac{{(x-1)^3}}{{3}}}$ -   +   ...   + (- 1)n+1$\displaystyle {\frac{{(x-1)^n}}{{n}}}$  

    für die einzugebenden Größen x und n. Geben Sie den berechneten Wert aus und vergleichen Sie diesen mit dem exakten Wert.
    Add: Versuchen Sie, ohne die Funktion pow auszukommen.

    Testdaten (x, n): (1.9, 16), (0.01,1000), (0.01,10)
  2. Berechnen Sie die Taylorreihenapproximation aus Gleichung (1) bis Sie eine relative Genauigkeit von $ \varepsilon$ bzgl. des exakten Wertes erreicht haben.
    Geben Sie den approximierten Wert, die Differenz zum exakten Wert und den Abbruchindex n (letztes n, für welches noch ein Term addiert wurde) aus.

    Die Befehle break, continue, goto sind hierbei (und generell im Rahmen der LV) nicht erlaubt.

    Hinweis: Eine Formel für die relative Genauigkeit ist $\displaystyle {\frac{{\vert v_\mathrm{exakt} - v_\mathrm{approx}\vert}}{{\vert v_\mathrm{exakt}\vert}}}$ falls vexakt $ \neq$ 0.

    Testdaten (x, $ \varepsilon$): (1.9, 1e-5), (0.01, 3.2 . 10-12)
  3. Schreiben Sie ein Programm, welches solange einen C++-string einliest bis der eingegebene String mit dem selbstgewählten Passwortstring übereinstimmt.
    Verdreifachen Sie bei jedem Fehlversuche eine Strafzahl (welche z.B., die Zeit regeln könnte, bis ein neuer Eingabeversuch erfolgen darf).
    Lassen Sie max. 5 Eingabeversuche zu.
    Hinweis: Beginnen Sie mit der ersten Teilaufgabe und erweitern Sie Ihre vorhandene Lösung um die nächste(n) Teilaufgabe(n).

    Die Befehle break, continue, goto sind hierbei (und generell im Rahmen der LV) nicht erlaubt.

    selbstgewählte Eingabedaten.
  4. doppelter Zählzyklus: Erzeugen Sie eine Tabelle aus den natürlichen Zahlen k $ \in$ $ \mathcal {I}$, deren Quadraten, dritten Potenzen bis zur p-ten Potenz (p > = 3) und geben Sie diese Tabelle wie folgt aus:

    Zahl         Quadrat         Kubik          ...         Zahlp
    4         16         64          ...         berechne 4p
    &vellip#vdots;         &vellip#vdots;         &vellip#vdots;          ...         &vellip#vdots;
    k         k2         k3          ...         kp
    &vellip#vdots;         &vellip#vdots;         &vellip#vdots;          ...         &vellip#vdots;
    n         n2         n3          ...         np
    $ \sum\limits_{{k \in \mathcal{I}}}^{}$k          $ \sum\limits_{{k \in \mathcal{I}}}^{}$k2          $ \sum\limits_{{k \in \mathcal{I}}}^{}$k3                    


    Dabei sollen nur die Summen der Zahlen, Quadrate und Kubikzahlen berechnet werden.
    Die Zahl k $ \in$ $ \mathcal {I}$ soll alle durch vier teilbaren natürlichen Zahlen mit k$ \le$n durchlaufen.

    Eingabedaten (n, p): (33, 6),    (431, 3)

    Hinweis 1: Testen Sie zuerst mit allen natürlichen Zahlen k = 1,..., 10.
    Hinweis 2: Zur tabellarischen Ausgabe, insbesondere rechtsbündige Ausgabe mit Platzhalter siehe §10 des Skriptes, #include <iomanip> nicht vergessen.
    Hinweis 3: Was passiert bei n = 432 und p = 3 ?

generelle Hinweise:
Schauen Sie sich die folgenden C++-Funktionalitäten an und nutzen Sie diese gegebenenfalls: for, while, do, fabs, string, cout.width, setw

Die Befehle break, continue, goto sind nicht erlaubt.



Abgabe der Lösungen:
Die Abgabe der Lösungen (*.cpp-Files, *.hpp, ..., keine exe-Files) erfolgt ausschließlich durch das Kopieren dieser Files in Ihr (beim erstenmal anzulegendes) Verzeichnis Nachname_Vorname im globalen Abgabeordner y: \\pers.ad.uni-graz.at\fs\ou\621\stud_haase\Nachname_Vorname .
Hinweise hierzu sind unter der LV-Homepage zu finden.

Die Filenamen müssen dem Schema bsp_nummer, gefolgt von der Filextension, entsprechen. Z.B. ist in Beispiel 1 das File bsp_1.cpp abzugeben. Andere Filebezeichner zählen als nicht abgegebene Files.




next up previous
Nächste Seite: Über dieses Dokument ...
Gundolf Haase 2009-03-24