Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Fakultät

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 ] > 2 <
010
17.11.2005, 19:55 Uhr
Pler
Einer von Vielen
(Operator)


stimmt in wahrheit läufts sogar ziemlich zeitig über.

ausgabe:

1
2
6
24
120
720
5040
40320
362880
3628800
39916800
479001600
1932053504
1278945280
2004310016
2004189184
-288522240
-898433024
109641728
-2102132736
-1195114496



Wobei mir auffällt, warum geht das überhaupt so weit? Dürfte int nicht bloß bis 32T nochwas gehn?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
17.11.2005, 22:50 Uhr
(un)wissender
Niveauwart


epsilon ist in <limits> definiert.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
17.11.2005, 22:55 Uhr
Pler
Einer von Vielen
(Operator)


@(un)wissender:
Hä?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
18.11.2005, 00:11 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Er meinte wohl, das
C++:
long double const EPSILON = 1e-18L;
man das weglassen kann und EPSILON aus <limits> nehmen kann
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
18.11.2005, 00:21 Uhr
0xdeadbeef
Gott
(Operator)


Nur ist das in diesem Fall nicht richtig, weil explizit 17 Stellen Genauigkeit verlangt wurden.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
18.11.2005, 06:42 Uhr
(un)wissender
Niveauwart


Ah, die 17. Habe es nicht so genau gelesen.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
18.11.2005, 09:40 Uhr
~DoppleR
Gast


Wen man die Formel anders aufschreibt, kommt man auch ohne long aus:

C++:
long double x = 1;
for (int n=20;n>1 ;n--) {//schon 1/19! < 1e-17
x/=n;
x+=1;
};


Beispiel:

Code:
1+1/2+1/6+1/24 = 1+ 1/2(1+1/3(1+1/4))


Man muss nur vorher n bestimmen, aber das kann man ja mit einem normalen double machen:

C++:
double f = 1;
int i = 1;
for (; f<1e17; i++) f*=i; //1e17 = 1/epsilon
n=i;


Man muss sich noch Gedanken machen, ob die restlichen Terme sich aufsummieren könnten, aber diese Reihe ist so schnell konvergent, dass das wohl nicht der Fall ist.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ 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: