bruch in c
-
hallo,
mit welchem Datentyp kann ich in c zu weisen
a=1/2
?
-
Es gibt in C(++) drei Gleitkommatypen namens float, double und long double, die für die meisten Anwendungen reichen. Wenn du "echte" Bruchrechnung betreiben willst, mußt du dir eine eigene Klasse schreiben.
PS: der Ausdruck
1/2ist in C++ immer ein int-Wert 0.
-
Zuweisen kann mans allen Nummerndatentypen und auch einigen anderen. Ich würde aber double oder float nehmen.
-
CStoll schrieb:
der Ausdruck
1/2ist in C++ immer ein int-Wert 0.1/2.- jetzt nimmer
*scnr* *d&r*
greetz, Swordfish
-
Swordfish schrieb:
CStoll schrieb:
der Ausdruck
1/2ist in C++ immer ein int-Wert 0.1/2.- jetzt nimmer
Ja, von Punkten war dort oben nirgends die Rede -
1/2.ist 0.5 (als double).
-
sich ne Bruch-Klasse zu schreiben, ist auch recht gut zum üben, besonder wenn man mal das Operatorenüberladen sinnvoll testen möchte.
-
mit der Rational Number library von boost geht es auch:
#include <boost/rational.hpp> // .. boost::rational< int > a( 1, 2 ); // a=1/2Gruß
Werner
-
Werner Salomon schrieb:
mit der Rational Number library von boost geht es auch:
#include <boost/rational.hpp> // .. boost::rational< int > a( 1, 2 ); // a=1/2Gruß
WernerWas, wenn man float in das template reintut?
-
Dann hast du einen "Rational", der potentiell irrationale Zahlen in Nenner und/oder Zähler haben kann...

greetz, Swordfish
-
Krux schrieb:
sich ne Bruch-Klasse zu schreiben, ist auch recht gut zum üben, besonder wenn man mal das Operatorenüberladen sinnvoll testen möchte.
Eine Bruch-Klasse in C schreiben?

Da bin ich ja mal gespannt.
-
Krux schrieb:
Werner Salomon schrieb:
boost::rational< int > a( 1, 2 ); // a=1/2Was, wenn man float in das template reintut?
dann wird es Dein Compiler nicht übersetzen. Der Typ für das rational-template muss u.a. über den Modulo-Operator (%) verfügen. Die Klasse benötigt den Operator um den größten gemeinsamen Teiler zu finden; und dies wiederum, um den Bruch ggf. zu kürzen.
Beispiel:
boost::rational< int > a( 3, 6 ); cout << a << endl;ergibt:
1/2Gruß
Werner
-
Javaner schrieb:
Krux schrieb:
sich ne Bruch-Klasse zu schreiben, ist auch recht gut zum üben, besonder wenn man mal das Operatorenüberladen sinnvoll testen möchte.
Eine Bruch-Klasse in C schreiben?

Da bin ich ja mal gespannt.Huch, hier ist ja das C++ und nicht das C Forum

-
Swordfish schrieb:
Dann hast du einen "Rational", der potentiell irrationale Zahlen in Nenner und/oder Zähler haben kann...

greetz, Swordfish
Nope, dann hast du einen festen Blödsinn. Und "irrationale Zahlen" kannst du mit nem float/double sowieso nicht darstellen, denn alles was sich als Bruch darstellen lässt ist rational und nicht irrational, und alles was in float/double darstellbar ist ist auch als Bruch darstellbar. Ok, mit Ausnahme von NaN, +inf, -inf etc.
-
och, die sind schon darstellbar. -x/0 ist -inf, x/0 ist +inf und 0/0 ist NaN ^^
-
Und was ist mit "negative zero"?

-
hustbaer schrieb:
Und was ist mit "negative zero"?

-0/-0 :p kreativ denken ^^
-
thordk schrieb:
hustbaer schrieb:
Und was ist mit "negative zero"?

-0/-0 :p kreativ denken ^^
Das ist weder negative noch zero. Sehr kreativ.
Außerdem kann die 'rational'-Klasse keine negativen Nenner speichern.