C++ Fakultät

Neue Frage »

Auf diesen Beitrag antworten »
Revyn C++ Fakultät

Hallo,

ich hab als Aufgabe bekommen in C++ ein Programm zu schreiben das mir bei eingegebener Zahl die Fakutät davon berechnet. In der Theorie einfach aber Praktisch dann doch nicht.^^

Ich poste einfach mal den Code:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>

void main ()
{

int a,ergebnis,i=2;

    cout<<"Geben Sie eine Zahl ein. Die Fakultaet der Zahl wird berechnet."<<endl<<endl;
    cout<<"Zahl: ";
    cin >>a;

    if (a==0 || a==1)
       {
        cout<<endl<<a<<"! = 1"<<endl;
       }
    else
        {
         for (i==2;i<=a;i++)
             {
              ergebnis=a*i;
              cout<<ergebnis;
             }
        }

 getch();
}



Ich bin auch glaube ich fast fertig. Das 0! und 1! = 1 ist hab ich mit if gemacht und jetzt wollte ich mit einer for-Schleife den Rest machen.
Aber es ist höchst wahrscheinlich irgendwas in der for-Schleife falsch.
Bsp: bei 2! gibt mir das Programm 4 aus anstatt 2. und bei 3! schon 69. geschockt
 
Auf diesen Beitrag antworten »
pi_mal_daumen

Erstmals ist deine for-Schleife nicht ganz korrekt (was soll das i == 2 am Anfang?) und 2. berechnest du die Fakultät nicht richtig.

Nehmen wir an, dein a wäre 5, und du hättest die Schleife


for (i = 2; i < a; i++) {
ergebnis = i*a;
}


Dann würdest du berechnen
ergebnis = 2*5
ergebnis = 3*5;
ergebnis = 4*5;
ergebnis = 5*5;

Das ist wahrlich nicht die Fakultät, zumal du dein altes Ergebnis immer wieder durch das neue Überschreibst.

Richtig wäre etwas wie:


int ergebnis = 1, i, a;
// ...
for (i = 1; i <= a; i++) {
ergebnis = ergebnis * i;
}


1! = 1
2! = 1*2
3! = 3*2*1 = (3*2)*1
4! = 4*3*2*1 = (4*3*2)*1 = ((4*3)*2)*1

usw...
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »