Forum

Einloggen | Registrieren | RSS  

silent_max(R)

E-Mail

08.01.2012,
11:21
 

C++ Header Dateien (Elektronik)

Hallo an die Gemeinde.

Weiß einer von euch zufällig, wie man in C++ mathematische Zeichen wie Pi und so Zeug einbezieht?

Ich habe folgendes vor:

Ich möchte über eine Objektimplementierung Volumenberechnungen machen.

Da es aber verschiedene Volumen gibt (Kugel, Zylinder, Pyramide, usw.) habe ich vor gehabt, eine Switch-Case-Anweiung zu programmieren.

Die verschiedenen Formeln für das jeweilige Volumen hätte ich in Header-Dateien geschrieben, wie auch das Objekt an sich.

Bloß nun ist meine Frage, ob Pi und so Zeug in der Header-Datei <math.h> schon drinnen ist oder ob ich Pi ersteinmal als Konstante definieren muss.

Weiß einer von euch Bescheid??

Vielen Dank im Voraus.

Gruß Max

--
Where is the madness ...

m(R)

08.01.2012,
12:30

@ silent_max

C++ Header Dateien

» Weiß einer von euch zufällig, wie man in C++ mathematische Zeichen wie Pi
» und so Zeug einbezieht?

"so Zeug" ist etwas vage.
Pi:

#include <iostream>
#include <ostream>
#include <cmath>

int
main()
{
std::cout << M_PI << " " << std::acos(0) * 2 << " " << 4*atan(1) << "n";
}

// M_PI ist ein Macro aus <cmath>



HTH,
m

silent_max(R)

E-Mail

08.01.2012,
13:14

@ m

C++ Header Dateien

Ersteinmal danke für deine Antwort.

» "so Zeug" ist etwas vage.

Mit "so Zeug" meinte ich:

-> Pi
-> Wurzel (sowohl Quadrat- als auch Kubikwurzel)
-> eulsche Zahl
-> usw.

Gruß

--
Where is the madness ...

m(R)

08.01.2012,
13:30

@ silent_max

C++ Header Dateien

» » "so Zeug" ist etwas vage.
»
» Mit "so Zeug" meinte ich:
...
» -> Wurzel (sowohl Quadrat- als auch Kubikwurzel)


std::sqrt(x) // Quadratwurzel, cmath.
std::pow(x,y); // beliebige Exponenten (also auch 1.0/3), cmath

» -> eulsche Zahl

std::log(x), std::exp(x) // natürlicher Logarithmus und Exponentialfunktion, cmath
std::exp(1.0); // e, cmath
M_E // Macro aus cmath, ob das portabel ist, weiß ich nicht auswendig.



Die Funktionen sind jeweils für verschiedene Datentypen (inclusive complex<>;) überladen).

Vielleicht noch der Hinweis: exp(1) und 4*atan(1) sind für e und pi unter Umständen genauer als das jeweilige Macro. (Zwischenergebnisse werden in Floating Point Registern gehalten, welche oft wesentlich länger sind als double oder long double. Die Macros können dagagen logischerweise nur double oder long double sein.)


m

silent_max(R)

E-Mail

08.01.2012,
13:51

@ m

C++ Header Dateien

» » » "so Zeug" ist etwas vage.
» »
» » Mit "so Zeug" meinte ich:
» ...
» » -> Wurzel (sowohl Quadrat- als auch Kubikwurzel)
»
»
» std::sqrt(x) // Quadratwurzel, cmath.
» std::pow(x,y); // beliebige Exponenten (also auch 1.0/3), cmath
»
» » -> eulsche Zahl
»
» std::log(x), std::exp(x) // natürlicher Logarithmus und
» Exponentialfunktion, cmath
» std::exp(1.0); // e, cmath
» M_E // Macro aus cmath, ob das portabel ist, weiß ich nicht auswendig.
»
»
»
» Die Funktionen sind jeweils für verschiedene Datentypen (inclusive
» complex<>;) überladen).
»
» Vielleicht noch der Hinweis: exp(1) und 4*atan(1) sind für e und pi unter
» Umständen genauer als das jeweilige Macro. (Zwischenergebnisse werden in
» Floating Point Registern gehalten, welche oft wesentlich länger sind als
» double oder long double. Die Macros können dagagen logischerweise nur
» double oder long double sein.)


Solche Zahlen deklariere ich eher als float als mit double oder long double.

--
Where is the madness ...