Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Binomialkoeffizent ...welcher datentyp?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
16.01.2008, 20:00 Uhr
latenite



Hallo Leute

Ich habe die Aufgabe den binomialkoeffizent zweier zahlen zu errechnen.
Zuerst habe ich die fakultät in einer headerdatei definiert und dann die rechnung sammt IO in der main.

also so:

main:

Code:
#include<iostream>
#include"./fakultaet.h"
using namespace std;

int main()
{
    /*
    
    n!
    --------
    (n-k)!k!
    
    */
    cout<<"Bitte Zahlen \"n\" und \"f\" eingeben: : "<<endl;
    unsigned long int n;
    unsigned long int k;
    cin>>n;
    cin>>k;
        
    unsigned long int ergebnis_n = fakultaet(n);
    unsigned long int ergebnis_k = fakultaet(k);
    //unsigned long int ergebnis_bnf = fakultaet(n)/(fakultaet(n-k)*fakultaet(k));
    
    cout<<"Ergebnis_n: "<<ergebnis_n<<endl;
    cout<<"Ergebnis_k: "<<ergebnis_k<<endl;
    //cout<<"Ergebnis_bnf ist: "<<ergebnis_bnf<<endl;
}



header:

Code:
#include<iostream>
using namespace std;

unsigned long int fakultaet(unsigned long int zahl)
{
    if (zahl <= 1)
    {
        return 1;
    }
    return zahl * fakultaet(zahl-1);
}



Mein problem ist, das der Zahlenbereich anscheinend nocht ausreicht oder das sich irgendwelche zahlenwerte ueberschreiben.

6 aus 49 kann ich gar nicht ausrechnen lassen.. dann kommt 0 raus.
was mache ich falsch??
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.01.2008, 21:55 Uhr
Hans
Library Walker
(Operator)


Hi,

Zitat von latenite:
Mein problem ist, das der Zahlenbereich anscheinend nocht ausreicht

Nicht nur anscheinend, sondern genau das ist das Problem.


Zitat von latenite:
6 aus 49 kann ich gar nicht ausrechnen lassen.. dann kommt 0 raus.
was mache ich falsch??

Schreib Dir den Ausdruck doch mal auf Papier auf, der sich ergibt, wenn Du 49 über 6, also

Code:
/    \
| 49  |
|  6  |
\     /


ausrechnen willst. Und geh mal mit 'nem Taschenrechner dran, bzw. schreib auch mal die Fakultäten aus, und überleg Dir, wo da grosse Zahlen vorkommen.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
17.01.2008, 01:54 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Du kannst dem nur beikommen indem du den Bruch vorher kürzt. Direkt die fakultät auszurechnen ist unbrauchbar und wenige performant....

Beispiel... Wenn du 5! durch 3! teilst ist es das gleiche wenn du einfach nur 4*5 rechnest, weil du die Faktoren 1,2 und 3 einfach kürzen kannst. Die sind sowohl in 5! als auch in 3! enthalten
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: