Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Informatik in der Schule » C++ Fakultät » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen C++ Fakultät
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Revyn
Grünschnabel


Dabei seit: 25.10.2009
Beiträge: 1

C++ Fakultät Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
25.10.2009 02:26 Revyn ist offline E-Mail an Revyn senden Beiträge von Revyn suchen Nehmen Sie Revyn in Ihre Freundesliste auf
pi_mal_daumen
Jungspund


Dabei seit: 19.05.2009
Beiträge: 20

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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...
26.10.2009 19:43 pi_mal_daumen ist offline E-Mail an pi_mal_daumen senden Beiträge von pi_mal_daumen suchen Nehmen Sie pi_mal_daumen in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Informatik in der Schule » C++ Fakultät