do-while-Schleife

Die do-while Schleife unterscheidet sich von der while-Schleife, dadurch, dass die Abbruchbedingung nicht am Anfang, sondern am Ende jedes Schleifendurchlaufs geprüft wird. Die Anweisung wird somit zumindest einmal durchlaufen.

Aufgabe

a) Schreibe ein Programm, welches die Fakultät einer Zahl berechnet.
Hinweis: Die Fakultät (!) einer Zahl ist folgendermaßen definiert: n!=1*2*3*…*n!

b) Erweitere das Programm, sodass auch der Sonderfall 0! = 1 beachtet wird.

Beispiel eines Ablaufdiagramms für a)

|--------------------------|
|fakultaet=1;              |   //initialisiere mit Wert 1!!!!
|cin>>n;                   |   //Lese Benutzereingabe ein!
|--------------------------|   //do-while Schleife
|do{                       |
|   |----------------------|
|   |fakultaet=fakultaet*n;|   //Multipl. aktuellen Wert von Fak. mit n
|   |----------------------|
|   |n--;                  |   //Dekrementiere n;
|   |----------------------|
|   }                      |
|while(n>0)                |   //Abbruchbedingung
|--------------------------|
|cout<<Ergebnis;           |   //Ausgabe
|--------------------------|

Lösung a):

int main()
{
 int n;
 int fakultaet=1;
 cout<<"Das folgende Programm berechnet die Fakultät der von Ihnen eingegebenen Zahl.";
 cout<<"\n Geben Sie eine positive ganze Zahl ein: ";
 cin>>n;
 do
 {
	  fakultaet=fakultaet*n;
	  n--;
 }while(n>0);
 cout<<"Ergebnis: " <<fakultaet;
 getch();
 return 0;
}

Syntax der do-while-Anweisung

do
  Anweisung;
while(Ausdruck); //Schleifenaustrittsbedingung
 
do
{
  Anweisung1;
  Anweisung2;
  ...;
}
while(Ausdruck); //Schleifenaustrittsbedingung

Aufgabe

Gegeben ist eine positive Zahl n (z.B. 123). Gesucht ist die Ausgabe der Ziffern dieser Zahl in umgekehrter Reihenfolge (also 321).

Hinweis für die Lösungsidee: Spalte jeweils die letzte Ziffer mit Hilfe des Modulo-Operators und der Division durch 10 ab!
Skizziere zuerst deine Lösungsidee in einem Ablaufdiagramm und beginne erst dann mit dem eigentlich Programmieren.