JGU Logo JGU Logo JGU Logo JGU Logo

Institut für Informatik

Michael Wand
Christian Ali Mehmeti-Göpel
Wintersemester 2020/21DIGITAL

Blatt 01

Aufgabe 02
Einführung in die Softwareentwicklung



Aufgabe Heron-Verfahren in C++

Letzte Änderung: 09. October 2020, 09:29 Uhr
12 Punkteim Detail
Ansicht:   |  
In der Vorlesung wurde C++ noch gar nicht eingeführt. Für diese Aufgabe ist dies jedoch gar nicht schlimm, denn


Das folgende Programm implementiert das Heron-Verfahren mithilfe einer while-Schleife, die sie bereits aus Python kennen.


#include <iostream>
#include <iomanip>

int main() {
    double input;
    std::cout << "Gib die Zahl ein, deren Wurzel du bestimmen möchtest: ";
    std::cin >> input;

    double a = input;
    double b = 1;

    while (std::abs(a - b) > 0.00001) {
        a = input / b;
        b = (a + b) / 2;
    }

    std::cout << std::setprecision(10) << "Die Wurzel von " 
              << input << " ist " << a << std::endl;
}

Aufgaben

  1. Im Tutorium wurde demonstriert, wie man C++-Code mit der Kommandozeile kompiliert. Kompilieren Sie also das Programm unter Verwendung einer Kommandozeile Ihrer Wahl und führen Sie es aus. Beschreiben Sie, welchen Befehl Sie dazu verwenden, und geben Sie Ihr Betriebssystem mit an.
  2. Obwohl das Programm eine Fließkommazahl als Eingabe braucht, kann der Nutzer natürlich trotzdem jede beliebige Zeichenkette übergeben. Überlegen Sie sich ein Beispiel für eine unsinnige Eingabe (mit Begründung) und beschreiben Sie, wie das Programm darauf reagiert.
  3. Finden Sie experimentell heraus, welche Funktion std::setprecision hat.
  4. In bestimmten Sonderfällen kann es vorkommen, dass die Schleife nie abbricht. Damit das Programm auch in diesen Fällen terminiert, wollen wir die Anzahl der Schleifendurchläufe begrenzen. Ändern Sie das Programm so ab, dass eine weitere Zahl vom Typ int eingelesen wird, diese Zahl soll die maximale Anzahl der Durchläufe sein. Modifizieren Sie die Schleife so, dass die Maximalanzahl nie überschritten wird.
  5. Ändern Sie das Programm derartig ab, dass zusätzlich zum Ergebnis ausgegeben wird, ob die Schleife die maximale Anzahl der erlaubten Durchläufe erreicht hat.