wurzel ziehen c++?

6 Antworten

hypothenusen rechnung ist doch a2+b2=c2? Oder dann rechnet man erstmal die hypothenuse und dann zieht man daraus die wurzel?

Wenn ich die frage richtig verstanden habe,

Prinzipiell könnte deine Zeile richtig sein. ^^

Allerdings fehlen uns da noch so ein paar Informationen. Welche Datentypen haben "zahl1" und "zahl2"? Gibt es einen Fehler zur Kompilezeit oder zur Laufzeit? Wenn zur Kompilezeit, dann wäre es schön, die Fehlermeldung mitzuteilen.

Ich vermute jetzt einfach mal, dass die beiden Variablen vom Typ Integer sind und der Kompiler nun die keine passende Funktion finden kann. Bzw. nicht eindeutig ermitteln kann, welche gemeint ist. Um das zu beheben, müsste man den Wert, den du der Funktion "sqrt" übergibst, vorher in den passenden Datentypen konvertieren. Das könnte dann so aussehen:

sqrt(static_cast<double>(zahl1*zahl1 + zahl2*zahl2));

Leider wurden die beiden Zeichen vor und nach dem Wort "double" nicht richtig dargestellt. Aber das sollen einfach spitze Klammern sein. :) Auf und dann zu.

Mickeyman  28.08.2011, 20:03

Oh, jetzt wurden sie doch richtig dargestellt ... Sorry für die Verwirrung.

0
Yamakuzure  05.09.2011, 18:20

Ich weiß nicht wie es bei Microsoft ist, aber in <cmath> vom gcc 4 steht:

template<typename _Tp>
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 
                                           double>::__type
    sqrt(_Tp __x)
    { return __builtin_sqrt(__x); }

Sieht kompliziert aus, heißt aber nur, dass es auch mit Integern geht. ;-) (Wenn integer übergeben wird, wird double zurückgeliefert.)

0
  1. Inkludiere <cmath> wenn du in C++ schreibst, math.h ist ein C-header.
  2. sqrt() liegt im Namensraum std.
  3. sqrt() liefert das ergebnis zurück, das musst du noch irgendeiner Variable zuweisen

Du kannst auch mit der folgenden Formel ixbeliebige Wurzel berechnen: z.B. zweite wurzel aus 5 -> 5^(1/2) = 2,23...

Hoffe das hilft dir weiter

In C++ geht es so:

#include <iostream>
double w = std::sqrt(30.03); // beispielwert
double c = std::sqrt(a*a + b*b); // pythagoras

Kein math.h oder ähnliches nötig. Getestet mit VC++ 2010.

PS: Stelle deine Fragen deutlichen bzw. warum stellst du eine Frage, wenn du schon eine Antwort hast?

Yamakuzure  05.09.2011, 18:14

Wenn, dann wäre es <cmath> und wenn du das nicht inkludieren musst, dann wird es implizit inkludiert. Ohne cmath kein sqrt.

0
gfuser9283  15.09.2011, 19:48
@Yamakuzure

Das juckt mich doch nicht, wenn es implizit eingebunden wird. Wenn ich schon iostream für cout einbinde, dann habe ich auch sqrt drin.

0