Frage von asdddada, 43

Wo liegt der Fehler in meinen C++ Code?

int main(){
int f; cout << "Geben sie eine Zahl ein: "; cin >> f; int k = f - 1; while(k > 0){ long double n = f * k; k--; }

Man soll damit eine Fakultät berechnen können.

Antwort
von Suboptimierer, 17

Ich würde n außerhalb der Schleife deklarieren und mit 1 initialisieren.

Außerdem müsste es über der Schleife, wenn ich es richtig sehe k = f heißen, da n! = 1 * 2 * ... * n ist. Du darst das letzte Element nicht ausschließen.

Die while kannst du über k > 1 laufen lassen, da eine Multiplikation mit 1 nichts verändert.

Die Multiplikation müsste meines Erachtens  n = n * k lauten. 

Eine Variable ist zuviel. Ich würde einfach das k weg lassen und alternativ zu obigem Vorschlag pro Iteration n *= f rechnen, solange f > 1 ist.

_____________

Am aller-aller-einfachsten wäre eine for-Schleife:

//...
long n=1;
for(cin>>f;f>1;f--)
  n*=f;
//...

Probier es mal aus. Mit dem cin im Schleifenkopf bin ich mir nicht sicher.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten