C++ :: Aufgabe #214
3 Lösungen
Übung zu For-Schleifen
Anfänger - C++
von Blasius18
- 27.09.2018 um 18:41 Uhr
Die Fakultät einer Ganzzahl in den Grenzen von 0<=n<=60
als Konsolenanwendung umsetzen.
Der Anwender wird aufgefordet, eine Zahl in den Grenzen von 0 bis 60 einzugeben.
Das Programm errechnet den Wert und gibt ihn wieder aus.
Um die Entwicklung besser verfolgen zu können wird in jedem Schleifendurchgang der Aktuelle wert der Fakultät beim ,i-ten` schleifendurchgang ausgegeben.
Zusatzfeature (kann..)
gibt der Nutzer eine Zahl > 60 ein, gibt's einen Hinweis und er wird erneurt zur Eingabe einer Zahl 1 < zahl < 60 aufgefordert.
hat er 3 mal eine falsche Zahl eingegeben, bricht das Programm ab.
als Konsolenanwendung umsetzen.
Der Anwender wird aufgefordet, eine Zahl in den Grenzen von 0 bis 60 einzugeben.
Das Programm errechnet den Wert und gibt ihn wieder aus.
Um die Entwicklung besser verfolgen zu können wird in jedem Schleifendurchgang der Aktuelle wert der Fakultät beim ,i-ten` schleifendurchgang ausgegeben.
Zusatzfeature (kann..)
gibt der Nutzer eine Zahl > 60 ein, gibt's einen Hinweis und er wird erneurt zur Eingabe einer Zahl 1 < zahl < 60 aufgefordert.
hat er 3 mal eine falsche Zahl eingegeben, bricht das Programm ab.
Lösungen:
C-Code
#include <iostream> #include <math.h> using namespace std; int main() { int zaehler = 0; do{ unsigned int zahl = 0; cout << "Zahl eingeben zwischen 0 und 60 eingeben!" << endl; cin >> zahl; long double fak = 1; if(zahl<0 || zahl>60){ cout << "Error" << endl; zaehler++; } else{ for ( int i=1; i<= zahl; i++){ fak *=i; cout <<i<< "-ter Durchgang:"<< ' ' << fak << endl; } cout << "Fakultaet von " << zahl <<"! betraegt " << fak << endl ; } } while(zaehler<3); return 0; }
C-Code
#include <iostream> using namespace std; //DEUTSCHE UMLAUTE___________________________________________ const unsigned char AE = static_cast<unsigned char>(142); const unsigned char ae = static_cast<unsigned char>(132); const unsigned char OE = static_cast<unsigned char>(153); const unsigned char oe = static_cast<unsigned char>(148); const unsigned char UE = static_cast<unsigned char>(154); const unsigned char ue = static_cast<unsigned char>(129); const unsigned char sz = static_cast<unsigned char>(225); //___________________________________________________________ int main() { //VARIABLEN___________________________________ int a; char b=' '; int wert; long double fak=1; bool chk = false; //DATENTYP LONG DOUBLE: Damit das Produkt im Wertebereich liegt //fak=1: Damit nicht mit 0 multipliziert wird //___________________________________________ //DO-WHILE SCHLEIFE: Hier wird geprüft ob die Usereingabe im Bereich 0-60 liegt. //Dem entsprechend wird die Berechnung gestartet oder //es wird ein Fehlertext angezeigt und die Eingabe wiederholt. do { system("cls"); cout<<"Bitte geben Sie eine Zahl von 0 - 60 ein: "; cin>>a; //DO-WHILE SCHLEIFE: Hier wird geprüft ob die Usereingabe für die Schrittfolge korrekt eingegeben wurde. do { system("cls"); cout<<"Wollen Sie jeden einzelnen Rechenschritt sehen?"<<endl<<"(J)a"<<endl<<"(N)ein"<<endl<<"(W)ert definieren"<<endl<<endl; cout<<"Bitte w"<<ae<<"hlen Sie aus: "; cin>>b; //Usereingabe für die Schrittfolge if ((b=='N'|| b=='n') || (b=='J' || b=='j' ))chk = true; //If-Schleife: Wenn "W" dann Usermenu if (b=='W' || b=='w') { system("cls"); cout<<"Bitte geben sie einen Wert f"<<ue<<"r die Schrittfolge ein: "; cin>>wert; chk=true; } }while(chk!=true); //Kontrolliert korrekte Eingabe //Prüft Usereingabe if (a<0||a>60) { cout<<"\nFEHLER: Ihre Zahl liegt nicht zwischen 0 und 60 !"<<endl; cout<<"Ihre Zahl ist "<<a<<", dass bedeutet: "; //Gibt Fehlertext aus if(a>60)cout<<" Sie ist \"GR"<<OE<<sz<<"ER\" als 60!"<<endl<<endl; if(a<0)cout<<" Sie ist \"KLEINER\" als 0!"<<endl<<endl; system("pause"); } }while (a<0||a>60); //Solange "a" (Usereingabe) nicht im erlaubten Bereich ist //If-Schleife: Wenn Usereingabe "a" null ist dann ist die Fakultät = 0 if(a==0) { system("cls"); cout<<"Die Fakult"<<ae<<"t von "<<0<<" ist:"<<endl<<endl; cout<<"!"<<"0"<<" = "<<"0"; }else{ system("cls"); //Berechnet die Fakultät in dem jede Zahl von der Usereingabe bis 1 mit dem Produkt multipliziert wird. for (int i=1; i<=a;i++) { //Variable_________ int w= i%wert; //_________________ //If-Schleife: Gibt Rechenweg für jede Rechnung aus. if((b=='J') || (b=='j' ))cout<<i<<" x "<<fak<<" = "<<fak*i<<endl; //If-Schleife: Gibt Rechenweg für jede Schrittfolge aus if((w==0) && ((b=='W')||(b=='w')))cout<<i<<" x "<<fak<<" = "<<fak*i<<endl; //Berechnet die Fakultät fak = fak * i; } //Ausgabe der Fakultät cout<<"Die Fakult"<<ae<<"t von "<<a<<" ist:"<<endl<<endl; cout<<"!"<<a<<" = "<<fak; } return 0; }
C-Code
#include <iostream> using namespace std; int main() { long n, sum = 1, i = 1; do { cout << "Zahl von 0 bis 60 eingeben: "; cin >> n; if(n < 0 || n > 60) { cout << "Fehler - Zahl ist auserhalb des Bereichs\n\n"; } } while(n < 0 || n > 60); while(i <= n) { sum *= i; cout << i++ << "! = " << sum << "\n"; } cout << "\nFakultät von " << n << "! = " << sum << "\n"; }