C++ :: Aufgabe #214

3 Lösungen Lösungen öffentlich

Ü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.

Lösungen:

vote_ok
von darkshepard (340 Punkte) - 10.02.2019 um 13:16 Uhr
Quellcode ausblenden 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;

}

vote_ok
von guerilla (70 Punkte) - 24.02.2019 um 17:11 Uhr
Quellcode ausblenden 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;
}
vote_ok
von basic (1310 Punkte) - 30.09.2020 um 02:57 Uhr
Quellcode ausblenden 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";
}
1801176

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.