Aufgabe 6
- Aufgabenstellung
- Lösung
Schreiben Sie ein C++ Programm, das mit einem durch den User gegebenen ganzzahligen Radius:
- den Umfang berechnet und ausgibt.
- die Fläche berechnet und ausgibt.
- den Kreis am Ende in einer auf der Konsole "zeichnet".
Schritt-für-Schritt-Anleitung zu Punkt 3:
-
Die Funktion
zeichneKreis(...)bekommt einen Radius übergeben – z. B.5. -
Zwei Schleifen durchlaufen ein 2D Raster: vertikal (
y) von-radiusbisradius, und horizontal (x) von-radiusbisradius. Für jeden Punkt(x, y)wird der Abstand zur Mitte(0, 0)berechnet:sqrt(x*x + y*y), also mit dem Satz des Pythagoras. ==Achtung: In dieser Aufgabe wird kein Array benötigt!== -
Wenn der soeben berrechnete Abstand ungefähr gleich
radiusist (mit kleinem Spielraum), wird an dieser Stelle einogezeichnet. Das ist ein Punkt auf dem Kreis. -
Wenn der Punkt nicht nah genug am Rand liegt, wird ein Leerzeichen ausgegeben.
-
Nach jeder Rasterzeile wird ein Zeilenumbruch gemacht (
cout << endl;). -
Am Ende ergibt sich ein grobes, aber erkennbares Kreisbild aus Zeichen in der Konsole.
Hinweise
Verwenden Sie den Header #include <cmath>, um π (M_PI) zu verwenden.
Erstellen sie für Punkt 1-3 eigene Funktionen, um den Code übersichtlich zu halten.
Ein ungefährer Vergleich lässt sich nicht durch ein Symbol wie == realisieren, sondern erfordert ein bisschen mathematische Trickserei: abs(a - b) < 0.7 ist eine Möglichkeit die absolute Abweichung von a und b mit einer Toleranz von 0.7 zu vergleichen. Beachten Sie: < ist ein Logik-Operator und der gesamte Ausdruck somit ein Logik-Ausdruck, der true oder false liefert.
#include <iostream>
#include <cmath>
using namespace std;
// PI-Definition (falls M_PI fehlt)
const double PI = 3.1415926535;
// Funktionen
double berechneUmfang(int r) {
return 2 * PI * r;
}
double berechneFlaeche(int r) {
return PI * r * r;
}
void zeichneKreis(int radius) {
cout << "\nZeichnung des Kreises:\n\n";
for (int y = -radius; y <= radius; y++) {
for (int x = -radius; x <= radius; x++) {
if (abs(sqrt(x*x + y*y) - radius) < 0.7) {
cout << "o";
} else {
cout << " ";
}
}
cout << endl;
}
}
int main() {
int radius;
cout << "Geben Sie den Radius des Kreises ein: ";
cin >> radius;
cout << "\nUmfang: " << berechneUmfang(radius) << endl;
cout << "Fläche: " << berechneFlaeche(radius) << endl;
zeichneKreis(radius);
return 0;
}