fehlerhafte Berechnung oder zu doofer Autor ?
-
Oder, um es deutlicher zu machen: C verwendet einen Punkt als Dezimaltrennzeichen.
-
Müsste der Compiler nicht einen Fehler melden? --> Lesen können hat Vorteile

-
DEvent schrieb:
Müsste der Compiler nicht einen Fehler melden? --> Lesen können hat Vorteile

Nein müsste er nicht, warum denn?
-
Bashar schrieb:
DEvent schrieb:
Müsste der Compiler nicht einen Fehler melden? --> Lesen können hat Vorteile

Nein müsste er nicht, warum denn?
long double erg=(3.1415*1,3333*r*r*r);Gibts einen ,-operator?
-
Ja, den gibt es - und der wird an dieser Stelle auch verwendet.
(der Komma-Operator verwirft das Ergebnis des ersten Operanden (Nebeneffekte machen sich bemerkbar) und liefert das Ergebnis des zweiten Operanden zurück - in dem Fall landet also "3.1415*1" auf dem Müll und "3333*r*r*r" wird zurückgegeben)
-
Alternativ zum Ändern des Kommas in einen Punkt könnte man auch einfach den Komma-Operator überladen, um den Fehler zu korrigieren:
#include <cmath> #include <iostream> class Int { int m_v; public: Int(int v) : m_v(v) { } float operator ,(int i) { int digits = 1, ii = i; float ret = m_v, place = 1; while ((ii /= 10) != 0) ++digits; while (digits) ret += int(i / std::pow(10.0, --digits)) % 10 * (place /= 10); return ret; } }; int main() { float f = (Int(1),2345); std::cout << f << std::endl; }Nur schade, dass man Operatoren nicht für PODs überladen kann.

-
Alternativ zum Ändern des Kommas in einen Punkt könnte man auch einfach den Komma-Operator überladen, um den Fehler zu korrigieren:
Üble idee.
-
GPC schrieb:
Alternativ zum Ändern des Kommas in einen Punkt könnte man auch einfach den Komma-Operator überladen, um den Fehler zu korrigieren:
Üble idee.
Ja, wenn sie ernst gemeint gewesen wäre. Das war eher ein Beispiel als Antwort zu DEvent, um zu zeigen, wie man mit dem ,-Operator schön Mist bauen kann.
-

-
oha... danke. Ihr seht, ich bin noch grün hinter den Ohren
