Programmierung C++
-
cmath=schrott schrieb:
Nathan schrieb:
Das liegt daran, dass es kein pow gibt, was zwei ints erwartet, sondern nur:
float pow( float base, float exp ); double pow( double base, double exp ); long double pow( long double base, long double exp );Da die Konversion von int zu float/double/long double gleich gut ist, ist jede Funktion gleichberechtigt und der Compiler weiß nicht, welche du meinst.
Einfach 10. schreiben und es wird die double-Funktion aufgerufen.Nein, vom Standard her ist es eindeutig, da es die Überladungen
double pow (double base , int exponent); long double pow (long double base, int exponent);gibt.
Arcoth schrieb:
wir berücksichtigen keine falschen Implementationen.
Nein, seit C++11 gibt es sie nicht mehr.
-
Nathan schrieb:
Nein, seit C++11 gibt es sie nicht mehr.
Seit C++11 ist es aber eindeutig, deshalb kann Com noch kein C++11-Compiler haben.
-
Warum nicht einfach umständlich, dafür schön simpel?
double getMeasValue(int e) { int zehnerPotenz {1}; if(e < 0) { for(unsigned i=1; i <= e*(-1); ++i) zehnerPotenz *= 10; return m_value / zehnerPotenz; } else if(e > 0) { for(unsigned i=1; i <= e; ++i) zehnerPotenz *= 10; return m_value * zehnerPotenz; } else return m_value; }
-
hardware schrieb:
Warum nicht einfach umständlich, dafür schön simpel?
double getMeasValue(int e) { int zehnerPotenz {1}; if(e < 0) { for(unsigned i=1; i <= e*(-1); ++i) zehnerPotenz *= 10; return m_value / zehnerPotenz; } else if(e > 0) { for(unsigned i=1; i <= e; ++i) zehnerPotenz *= 10; return m_value * zehnerPotenz; } else return m_value; }da sehe ich gerade mehrere kritikpunkte...
-
toller troller trollt schrieb:
hardware schrieb:
Warum nicht einfach umständlich, dafür schön simpel?
da sehe ich gerade mehrere kritikpunkte...
jo stimmt, zehnerPotenz bitte mit 10 initialisieren! Was sonst noch?
-
hardware schrieb:
toller troller trollt schrieb:
hardware schrieb:
Warum nicht einfach umständlich, dafür schön simpel?
da sehe ich gerade mehrere kritikpunkte...
jo stimmt, zehnerPotenz bitte mit 10 initialisieren! Was sonst noch?
- wieso *(-1) statt der unären negation?
- wieso doppelter code? (die kleinen unterschiede kann man auch anders behandeln)
- wieso extra-variable i statt einfach mit e zu arbeiten?und btw.: x^0 ergibt 1, nicht x.

-
toller troller trollt schrieb:
- wieso *(-1) statt der unären negation?
- wieso doppelter code? (die kleinen unterschiede kann man auch anders behandeln)
- wieso extra-variable i statt einfach mit e zu arbeiten?und btw.: x^0 ergibt 1, nicht x.

-stimmt...
-naja keine Ahnung wie ich das machen sollte, Vorschläge, bitte?
-i is die Zählervariable von der vorschleife... Weiß nicht wie du von e bis e zählen willst?deshalb, e < 0 mach dies, e > 0 mach das, e == 0 mache nix (mal 1 kann man sich sparen)
mfg
-
cmath=schrott schrieb:
Nathan schrieb:
Nein, seit C++11 gibt es sie nicht mehr.
Seit C++11 ist es aber eindeutig, deshalb kann Com noch kein C++11-Compiler haben.
Nein.
Ruft man eine Funktion, die Überladungen für float, double und long double anbietet, mit einem int auf, so gibt es eine Mehrdeutigkeit, da die Konvertierung gleich gut ist:
http://ideone.com/PS5PLL
-
Nathan schrieb:
cmath=schrott schrieb:
Nathan schrieb:
Nein, seit C++11 gibt es sie nicht mehr.
Seit C++11 ist es aber eindeutig, deshalb kann Com noch kein C++11-Compiler haben.
Nein.
Doch: http://ideone.com/Jhrkj9
math.h bietet in C++11 eine passende Überladung mit Templates an.
-
cmath=schrott schrieb:
Nathan schrieb:
cmath=schrott schrieb:
Nathan schrieb:
Nein, seit C++11 gibt es sie nicht mehr.
Seit C++11 ist es aber eindeutig, deshalb kann Com noch kein C++11-Compiler haben.
Nein.
Doch: http://ideone.com/Jhrkj9
math.h bietet in C++11 eine passende Überladung mit Templates an.
Ok, das wusste ich nicht.
Der Header heißt übrigens cmath, dann haste das auch wie alles andere im Namespace.
-
Nathan schrieb:
Der Header heißt übrigens cmath, dann haste das auch wie alles andere im Namespace.
Was bringt mir das? Ich muss sowieso damit rechnen, dass es im globalen Namensraum sein kann.
-
cmath=schrott schrieb:
Nathan schrieb:
Der Header heißt übrigens cmath, dann haste das auch wie alles andere im Namespace.
Was bringt mir das? Ich muss sowieso damit rechnen, dass es im globalen Namensraum sein kann.
Konsistenz.
Man kann einfach std:: davor packen und muss nicht überlegen aus welchem Header genau das jetzt kommt (complex? numeric?)
-
Hab ich grad ein Deja-Vu oder versucht ihr tatsächlich, in einem anderen Thread nochmal exakt die gleiche Troll-Nummer abzuziehen?
-
Bashar schrieb:
Hab ich grad ein Deja-Vu oder versucht ihr tatsächlich, in einem anderen Thread nochmal exakt die gleiche Troll-Nummer abzuziehen?
?
Was heißt die gleiche Troll-Nummer?
-