Fakultaet berechnen.. eigentlich ganz easy...



  • mahlzeit!

    also ich soll für die schule ein programm schreiben, das die fakultaet berechnet, also z.B. wenn der benutzer 6 eingibt, ist die fakultaet von 6:

    6*5*4*3*2*1...

    und die fakultaet von 1 ist 1, und die von 0 ist komischer weise auch 1 ?!?! hmmzz..

    habe hier schonma ein wenig probiert, aber bekomme es nicht hin! könnt ihr mir vllt helfen?

    #include <iostream.h>
    
    void main()
    {
      cin x;
    
      while ( x != 0 );
      {
    	  cout x"*";
          x--;
      }
    
    }
    

    danke schonma im voraus...

    mfg

    kiezstyler



  • Welche ausgabe willst du haben?

    Wenn es die Rechnung selbst ist also bei der Eingabe von 3 am Ende "3*2*1" ohne die "" steht:
    [cpp]
    #include<iostream>
    using namespace std; //muss eingefuegt werden, da sich cin usw im namespace std befindet.

    int main()
    {
    int x; //definition von x
    cin<<x;
    if(x=0)
    {
    cout<<"1";
    return 0<
    };
    while(x!=0)
    {
    cout<<x<<"*";
    x--;
    }
    return 0;
    }

    du hast da recht viele fehler drin bei deinem prog.



  • cin >> x;



  • danke danke...

    aber ausführen kann ich es nicht :((

    wegen diesen fehlern...

    E:\Aufgabe4\Aufg4.cpp(2) : error C2871: 'std' : Existiert nicht oder ist kein Namespace

    E:\Aufgabe4\Aufg4.cpp(12) : error C2059: Syntaxfehler : '}'

    hmmz...

    mfg



  • also den 1. fehler konnte ich beheben, war easy, aber den mit dem std: weiß ich nich :((

    mfg



  • welcher compiler ?



  • hab das prog visual c++ 6.0

    oda was meinst du? hab da nich soviel ahnung von, hehe... shit...

    mfg



  • du hast das

    using namespace std;
    

    vergessen...



  • das habe ich mit drinn, hier...

    #include <iostream.h>
    
    using namespace std;
    
    int main()
    {
    int x;
    cin>>x;
    if(x=0)
    {
    cout<<"1";
    return 0;
    
    }
    while(x!=0)
    {
    cout<<x<<"*";
    x--;
    }
    return 0;
    }
    

    hmm, aber bekomme den fehler nich weg...

    mfg



  • #include<iostream>
    if(x==0)



  • #include <iostream.h> ändere in #include <iostream>



  • danke erstmal, aber iwie geht das nich, habe es eben nochma selber versucht, mit meinem beispiel geht es jetzt...

    fett..

    mfg



  • als erstes solltest du dir mal nen brauchbaren compiler holen

    msvc 6 ist broken und sollte nicht verwendet werden



  • #include <iostream.h>
    
    int Fakultaet(int n);
    
    int main(void)
    {
        cin >> x;
        cout << Fakultaet(x);
    }
    
    int Fakultaet(int n)
    {
        if(n == 0)
        {
            return 1;
        }
        else
        {
        return (n* Fakultaet(n-1));
        }
    }
    

    EDIT: Habs als Reaktion auf den Post unter mir nochmal editiert.



  • Tobi3000 schrieb:

    #include <iostream.h>
    
    int Fakultaet(int n);
    
    int main(void)
    {
        cin x;
        cout Fakultaet(x);
    }
    
    int Fakultaet(int n)
    {
        if(n == 0)
        {
            return 1;
        }
        else
        {
        return (n* Fakultaet(n-1));
        }
    }
    

    Das ist zwar richtig aber ich glaube nicht das er das verstehen wird.

    Schau mal:
    Die Fakultät von 5 = 5*4*3*2*1 = 120
    So! Dafür kann man jetzt aber auch 5! = 54!
    weil 4!=4*3*2
    1
    Also kann man doch weitergehen:

    5! = 54!
    5! = 5*4*3!
    5! = 5*4*3
    2!
    5! = 5*4*3*2*1!
    und 1! = 1
    also folgt daraus
    5! = 5*4*3*2*1
    und so weiter

    also kann man doch sagen

    n! = n*(n-1)!

    Es wird immer n! aufgerufen und mit (n-1)! multipliziert, solange bis n=1 ist, weil 1! = 1

    Wennde noch mehr Informationen suchst, such mal nach "Rekursion".

    Edit: Hab mir nochmal deinen Code angeguckt. Entweder du hast bei cin und cout die "<< und >>" vergessen oder du benutzt nen compiler der das auch so kann^^
    Hier nochmal mein Code:

    #include <iostream>
    
    using namespace std;
    int Fakultaet(int n);
    
    int main()
    {
        int x = 0;
        cin >> x;
        cout <<  Fakultaet(x);
    }
    
    int Fakultaet(int n)
    {
        if(n == 1) //Kannst auch if(n==0) nehmen, aber ich habs mit n==1 erklärt
        {
            return 1;
        }
        else
        {
        return (n* Fakultaet(n-1));
        }
    }
    


  • r0nny schrieb:

    als erstes solltest du dir mal nen brauchbaren compiler holen

    msvc 6 ist broken und sollte nicht verwendet werden

    Was ist denn mit dem VS6 Compiler ? Ich benutzer die Enterprise Version und ich erzeuge kleinere und schnellere Compilate wie mit der Express Version von 2005.

    Immer wieder lese ich, dass dier Compiler Schrott sein soll, aber keiner konnte bisher sagen warum. Nur weil es neuere Versionen gibt, muss der alte nicht zwangsläufig schlecht sein.

    Mfg



  • Er unterstützt den C++-Standard nicht in vollem Umfang.
    Es gibt mehrere Bugs in der CRT-Implementation.
    Der Compiler hat ettliche Bugs.
    Er produziert bei weitem kein optimalen Code.

    Und nur weil du mit dem VS05 nicht umgehen kannst, da können wir nichts dafür. VS05 legt standardmäßig mehr Wert auf Sicherheit als auf Geschwindigkeit, du kannst das aber jederzeit in den Einstellungen ändern.



  • Ich hab wirklich << und >> vergessen.



  • wiss0r schrieb:

    Er unterstützt den C++-Standard nicht in vollem Umfang.
    Es gibt mehrere Bugs in der CRT-Implementation.
    Der Compiler hat ettliche Bugs.
    Er produziert bei weitem kein optimalen Code.

    Und nur weil du mit dem VS05 nicht umgehen kannst, da können wir nichts dafür. VS05 legt standardmäßig mehr Wert auf Sicherheit als auf Geschwindigkeit, du kannst das aber jederzeit in den Einstellungen ändern.

    Entschuldige, aber was fühlst Du Dich denn jetzt angesprochen ? Ich habe nur etwas angesprochen und Du kommst gleich aus Deinem Loch gekrochen.
    Was sind denn das für Bugs ? Ich höre das immer wieder, aber nichts konkretes.

    Jetzt noch was in eigener Sache. Die C++ Community ist die unfreundlichste die ich jemals erlebt habe. In anderen Foren (für VB z.B.) ist der Umgangston ein ganz anderer. So und nun viel Spass beim flamen.



  • naja - höhere trollquote - das suckt

    technisch hat er aber recht - nur sowas wie das ganze höflich sagen muss anscheinend doch gelernt sein



  • Sunnyboy2004 schrieb:

    und die fakultaet von 1 ist 1, und die von 0 ist komischer weise auch 1 ?!?! hmmzz..

    Genau die gleiche frage hab ich mich auch gestellt!?
    Warum ist 0! = 1
    Hab dann mal nen bischen gegoogelt und nur herausgefunden, dass das "mathematisch so definiert ist". Bin aber eigentlich mit der Lösung nicht so zufrieden? Kann mir das jemand mal biddö erklären? 🙂


Anmelden zum Antworten