Übungsaufgabe Struktogramm Primfaktorzerlegung
-
Thaelisin schrieb:
Ach mist...
Kann mir jemand von euch irgendwie weiterhelfen? Ich weiß nicht was ich falsch mache.Du hältst dich nicht ans Struktogramm.
-
Jetzt sieht es doch gut aus oder?
#include <iomanip> #include <iostream> #include <cmath> using namespace std; int main() { int faktor = 2, zahl, rest; cout << "Geben Sie eine Zahl ein: " << endl; cin >> zahl; while (faktor<=(int)sqrt(double(zahl))) { rest = zahl%faktor; if (rest == 0) { cout << "Faktor: " << faktor << endl; zahl = zahl / faktor; faktor = 2; } else { faktor = faktor + 1; } } cout << "Zahl:" << zahl << endl; }
-
Ja? Ich sage nur Struktogramm.
-
Hmm ich erkenne nicht, wo mein Programm aktuell von dem Struktogramm abweicht. Kannst du mir bitte weiterhelfen?
-
#include <iomanip> #include <iostream> #include <cmath> using namespace std; int main() { int faktor = 2, zahl, rest; cout << "Geben Sie eine Zahl ein: " << endl; cin >> zahl; do { rest = zahl%faktor; if (rest == 0) { cout << "Faktor: " << faktor << endl; zahl = zahl / faktor; faktor = 2; } else { faktor = faktor + 1; } }while (faktor<=(int)sqrt(double(zahl))) cout << "Zahl:" << zahl << endl; }
-
Ach so, war es daran zu erkennen wie die Schleife im Struktogramm dargestellt ist? Also wo der Block nur links und unten von der Schleife eingefasst wird?
Vielen Dank schon mal!
-
Ich habe dem Struktogramm entnommen, dass die Schleife auf jeden Fall ein Mal ausgeführt werden soll, und erst am Ende geprüft werden soll, ob die Bedingung für einen weiteren Durchlauf gegeben ist.
Bei Deiner Version war es je nach Eintrittsbedingung möglich, dass die Schleife kein Mal ausgeführt wird.
-
Thaelisin schrieb:
Ach so, war es daran zu erkennen wie die Schleife im Struktogramm dargestellt ist? Also wo der Block nur links und unten von der Schleife eingefasst wird?
Bedingung im Diagramm oben: Bedingung am Anfang prüfen.
Bedingung im Diagramm unten: Bedingung am Ende prüfen.https://de.wikipedia.org/wiki/Nassi-Shneiderman-Diagramm#Schleifen
-
Vielen, vielen Dank euch für die Hilfe!