Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » pi

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 ]
000
16.09.2004, 15:06 Uhr
~bonanza
Gast


gibt es einen befehl mit dem man die zahl Pi ausgeben kann?

danke für eure hilfe im voraus!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.09.2004, 15:34 Uhr
Tacco



Hallo,

wiso PI auslesen??

PI ändert sich doch nicht.

wen du PI in einen programm nutzen möchtest dan schreib dich in dein heder das hir:


C++:
const double PI=3.1415926535897932384626433832795;


Mfg Tacco
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
16.09.2004, 15:46 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


normalerweise wird eine konstante M_PI defniert musst das also nicht extra verwenden
sollte der compiler die wiedererwartens nicht kennen obwohl du cmath bzw. math.h includiert hast würde ich sowas empfeheln


C++:
#ifndef M_PI
#define M_PI 3.1415926535897932384626433832795
#endif


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 16.09.2004 um 15:47 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
16.09.2004, 18:32 Uhr
~bonanza
Gast


ich kann aber immer nur 5 stellen hinterm komma anzeigen!! wie kann ich mehr anzeigen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
16.09.2004, 18:36 Uhr
Hans
Library Walker
(Operator)



Zitat von Windalf:
normalerweise wird eine konstante M_PI defniert musst das also nicht extra verwenden
sollte der compiler die wiedererwartens nicht kennen obwohl du cmath bzw. math.h includiert hast würde ich sowas empfeheln


C++:
#ifndef M_PI
#define M_PI 3.1415926535897932384626433832795
#endif




Hi Windalf,

ich würde das so machen:

C++:
const double PI=4*atan(1.);



das greift zwar auch irgendwo auf so eine konstante Zahlenkette zu, wie Du sie da oben stehen hast, aber die steckt im Bibliotheksfile, und somit liegt die Verantwortung für die Genauigkeit von pi nicht mehr beim Programmierer. Anders ist es natürlich, wenn man eine "astronomische Genauigkeit" braucht, also wenigstens 30 Stellen nach dem Komma. Aber dann arbeitet man eh mit speziellen Bibliotheken, und nicht mit der Arithmetik des Compilers...

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
005
16.09.2004, 20:05 Uhr
Bruder Leif
dances with systems
(Operator)


Moin!

Nur zur Ergänzung noch ein bißchen Mathematik...


C++:
#include <stdio.h>

main()
{
        int iCounter, iVorzeichen;
        double fPi, fOldValue, fFaktor;
        double fInterpol, fOldInterpol;
        double fdoubleInterpol, fOlddoubleInterpol;
        double fTripleInterpol, fOldTripleInterpol;
        double fQuadInterpol, fOldQuadInterpol;
        double fQuintInterpol, fOldQuintInterpol;
        double fHexInterpol, fOldHexInterpol;
        double fHeptInterpol, fOldHeptInterpol;
        double fOktInterpol, fOldOktInterpol;
        double fNonInterpol, fOldNonInterpol;
        double fDekInterpol, fOldDekInterpol;
        double fErgebnis;

        printf( "Berechne PI, bitte warten... " );

        fPi = fInterpol = fdoubleInterpol = 0;
        fTripleInterpol = fQuadInterpol = 0;
        fQuintInterpol = fHexInterpol = 0;
        fHeptInterpol = fOktInterpol = 0;
        fNonInterpol = fDekInterpol = 0;
        fFaktor = iVorzeichen = 1;

        for( iCounter=0; iCounter<=40; iCounter++ )
        {
                fOldDekInterpol = fDekInterpol;
                fOldNonInterpol = fNonInterpol;
                fOldOktInterpol = fOktInterpol;
                fOldHeptInterpol = fHeptInterpol;
                fOldHexInterpol = fHexInterpol;
                fOldQuintInterpol = fQuintInterpol;
                fOldQuadInterpol = fQuadInterpol;
                fOldTripleInterpol = fTripleInterpol;
                fOlddoubleInterpol = fdoubleInterpol;
                fOldInterpol = fInterpol;
                fOldValue = fPi;

                fPi = fPi + iVorzeichen * ( 1 / fFaktor );
                fFaktor += 2;

                if( iVorzeichen == 1 ) iVorzeichen = -1;
                else iVorzeichen = 1;

                fInterpol = (fPi+fOldValue)*2;
                fdoubleInterpol = (fInterpol+fOldInterpol)/2;
                fTripleInterpol = (fdoubleInterpol+fOlddoubleInterpol)/2;
                fQuadInterpol = (fTripleInterpol+fOldTripleInterpol)/2;
                fQuintInterpol = (fQuadInterpol+fOldQuadInterpol)/2;
                fHexInterpol = (fQuintInterpol+fOldQuintInterpol)/2;
                fHeptInterpol = (fHexInterpol+fOldHexInterpol)/2;
                fOktInterpol = (fHeptInterpol+fOldHeptInterpol)/2;
                fNonInterpol = (fOktInterpol+fOldOktInterpol)/2;
                fDekInterpol = (fNonInterpol+fOldNonInterpol)/2;
        }
        fErgebnis = (fDekInterpol+fOldDekInterpol)/2;
        printf( "\rPi ist ungef„hr %.14lf\n", fErgebnis );
}        


--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
16.09.2004, 20:12 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@Hans
Ich erinnere mich dunkel das wir die diskussion schon mal hatten...

der vorteil deiner variante ist (wenn atan richtig implementiert ist) das die Verantwortung für die Genauigkeit von pi nicht mehr beim Programmierer liegt...

der nachteil ist halt das es Rechenzeit zur laufzeit kostet...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
16.09.2004, 20:32 Uhr
virtual
Sexiest Bit alive
(Operator)


Jain,

Also der Weg über atan ist der einzigst Portable Weg, weil ANSI C nicht das Macro M_PI vorsieht. Aber hier, in der Windows Welt, wo alle Standards eh Schall und Rauch sind, kann man M_PI verwenden, weil die Jungs, die die Header machen, schon ziemlich genau blicken, welche Genauigkeit PI haben muß.
[trollmode]Jedenfalls ist das meine Erfahrung aus der UNIX Welt. Kann natürlich sein, daß unter Windows da einige Ungenauigkeiten drin sind[/trollmode]
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
16.09.2004, 20:51 Uhr
Bruder Leif
dances with systems
(Operator)


Naja, was die Genauigkeit angeht, ist bei double eh nach 15 Stellen Schluß... und wers in der Praxis noch genauer als 3.14159265358979323846264338327950288419716939937510582097494459 braucht, schreibt sein Programm nicht in C/C++
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.

Dieser Post wurde am 16.09.2004 um 20:52 Uhr von Bruder Leif editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
16.09.2004, 21:36 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

Also der Weg über atan ist der einzigst Portable Weg



[klugscheissmode]
nein man kann PI z.b. auch selber durch ne Reihenentwicklung approximieren anstatt das den arctan machen zu lassen...
[/klugscheissmode]
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: