Aufgabe Heron-Verfahren in C++
Letzte Änderung: 09. October 2020, 09:29 Uhr
12 Punkte — im Detail
Ansicht: | In der Vorlesung wurde C++ noch gar nicht eingeführt. Für diese Aufgabe ist dies jedoch gar nicht schlimm, denn
- zum Glück können wir bereits Python und können uns damit zumindest die Funktionalität des angegebenen C++-Codes herleiten (Begriffe wie
for
, while
und if
haben über Programmiersprachen hinweg glücklicherweise meistens ähnliche semantische Bedeutung). - eigentlich geht es in dieser Aufgabe noch gar nicht um C++, sondern um das kennenlernen Ihres (wahrscheinlich neuen) Setups. Versuchen sie also auch einmal bewusst den Code leicht zu modifizieren, um schon einmal ein Gefühl für den Zoo an Fehlermeldungen dieser Sprache zu bekommen.
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
- 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.
- 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.
- Finden Sie experimentell heraus, welche Funktion
std::setprecision
hat. - 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. - Ä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.