Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Problem mit RossiBigInt: Vector subscribt out of range

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
17.01.2008, 20:25 Uhr
~amsel
Gast


Hallo an alle,

ich möchte den Binomialkoeffizienten von relativ großen zahlen erreichnen.
Dazu habe ich von https://sourceforge.net/project/showfiles.php?group_id=130028
mir die BigInt Klasse runtergeladen. Kann damit auch einige große Zahlen Multiplizieren und dividieren. Doch bei meiner Version vom Binomialkoeffizienten tretten abundzu Fehler auf. Diese jedoch nur bei bestimmten Parametern.
Hier ersteinmal 2 Versionen meiner Funktion:

Version 1:


C++:
RossiBigInt Binkof ( unsigned long b1, unsigned long b2)
{
RossiBigInt p1(0), p2(0) ,p3(0), p4(0), erg(0);
unsigned int b3;
p1=Faku(b1);                                 cout<<"\nn!= "<<p1;
p2=Faku(b2);                                 cout<<"\nk!= "<<p2;
b3=b1-b2;
p3=Faku(b3);
p4=p2*p3;                                    cout<<"\nk!*(n-k)!= "<<p4;
erg = p1 / p4;                               cout<<"\nerg= "<<erg;
return p1;
}


Version 2:

C++:
RossiBigInt Binkof ( unsigned long b1, unsigned long b2)
unsigned long b3, b4;
RossiBigInt p1(1), p2(0), erg (0);

b3= b1-b2;
if (b3<b2){b4=b2;} else{b4=b3;b3=b2;}         cout <<"\tb4= "<<b4<<" b3= "<<b3;
for (unsigned long x=b4+1;x<b1+1;x++){        cout <<"\nx= "<<x;
p1=p1 * x;
} cout<<"\np1= "<<p1;
p2=Faku(b3);                                  cout<<"\np2= "<<p2;
erg=p1 /p2;                                   cout<<"\nerg= "<<erg;

return erg;
}


In der Funktion verwende ich noch meine Funktion Faku:

C++:
RossiBigInt Faku(unsigned long f)
{
RossiBigInt erg(1);
RossiBigInt t(0);
for (int x=0;x<f;x++){
t++;
erg=erg*t;  
}
return erg;
}


Bei der ersten Version bekomme ich den Fehler mit den Parametern b1=50, b2=20 und in der 2 Version bei b1=50, b2=21.

Leider gibt es auch Parameter die in beiden Funktionen zum Fehler führen. Aber zb. b1=500, b2=250 funktioniert (bei einer auf alle fälle, ob bei beiden bin ich mir gerade nciht sicher).

ich habe Windows XP prof und benutze MSVS2005 prof.

Der Fehler tritt jedesmal bei der division zur berrechnung von erg auf.

Kann mir vielleicht jemand sagen wo mein Fehler ist oder wo ich suchen kann?

Ich habe keine Idee und sehe es nicht. Wenn noch irgendwelche notwendigen Infos fehlen dann bitte bescheidsagen.

Riesendankeschön für jeden Tipp

amsel
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


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: