Quadrieren in C++

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/quadrieren_in_c_170645/page_1 - zur Vollversion wechseln!


UncleFucka schrieb am 27.10.2006 um 15:40

sers

bin grad am verzweifeln.
ich versuche eine zahl a hoch b zu nehmen, aber ich bekomm dauernd einen error raus.

kann mir bitte jemand den exakten code posten? nur ein beispiel.

wenn ichs so, wie die hilfe es mir sagt, eingebe:

Code:
i=pow(double _a, double _b);

kommt ein error

wenn ich
Code:
i=pow(a, b);
eingebe, dann gehts, aber nur wenn a und b als double initialisiert werden. wenn ichs als int initialisiere gehts nicht mehr, wieso? und wie kann ichs mit int machen?

tia

// math.h ist included ;)


Burschi1620 schrieb am 27.10.2006 um 15:47

könnte daran liegen dass die funktion "pow" als rückgabewert (i) double hat, darum funzt int nicht.
müsstest in der API nachlesen


UncleFucka schrieb am 27.10.2006 um 15:48

i hab ich aber als int initialisiert-> er gibt mir ein warning aus das eben die kommastellen abgeschnitten werden, aber es funktioniert, aber sobald a oder b int sind hängt er sich sozusagen komplett auf mit errors.


Bowser schrieb am 27.10.2006 um 15:48

http://www.cppreference.com/stdmath/pow.html

Das erste kann net gehen, weilst da probierst die Funktion zu initialisieren und da stimmt die Syntax net. Beim zweiten sollt er eigentlich automatisch konvertieren. Falls net einfach händisch machen mit pow( (double)a, (double)b );


Burschi1620 schrieb am 27.10.2006 um 15:51

Zitat von Uncle****a
i hab ich aber als int initialisiert-> er gibt mir ein warning aus das eben die kommastellen abgeschnitten werden, aber es funktioniert, aber sobald a oder b int sind hängt er sich sozusagen komplett auf mit errors.
jo deswegen gehts net
i muss double sein wie auf der seite da steht
Zitat
double pow( double base, double exp );


Frys_Assassin schrieb am 27.10.2006 um 16:39

geht das, explizite typcasting von int auf double? hab lang kein c++ mehr gemacht :)

Code:
double i = pow((double)a, (double)b);


ica schrieb am 27.10.2006 um 17:09

wenn schon dann:

Code:
i = static_cast<int>(pow(...));


Burschi1620 schrieb am 27.10.2006 um 17:24

Zitat von Frys_Assassin
geht das, explizite typcasting von int auf double? hab lang kein c++ mehr gemacht :)
Code:
double i = pow((double)a, (double)b);

(ich weiß net wies in C++ is, aber in C . .. )
wenn du des i deklarierst mit der zeile gehts, wenn es das i schon gibt nicht


that schrieb am 27.10.2006 um 17:26

Quadrieren geht aber einfacher.... a*a :)


UncleFucka schrieb am 27.10.2006 um 17:34

ja ich muss das ganze aber in eine formel einbauen, ala 10^n-1

und n ist eben variabel.


FragCool schrieb am 27.10.2006 um 17:40

Typecast in C++ gehn eben (TYPE)variable

also eben pow((double)a,(double)b);
Wie schon oben steht, der Syntax der in der Hilfe verwendet wird muss nicht der Programmiersprachen Syntax entsprechen ;)

Ist wie wenn du deine Deutschhausübung in Lautschrift machst ;)


that schrieb am 27.10.2006 um 17:44

Zitat von Uncle****a
ja ich muss das ganze aber in eine formel einbauen, ala 10^n-1

und n ist eben variabel.

OK, dann willst du potenzieren und nicht quadrieren - halte dich an das Beispiel von Frys_Assassin.

Bedenke auch, dass "int" einen beschränkten Wertebereich hat - wenn n > 10 ist, könnte das zu unerwarteten Ergebnissen führen, falls du das Ergebnis in ein "int" stopfen willst.


Edit: Mir ist gerade ein übler Hack eingefallen:

Code: PHP
#include <stdexcept>

...

    static const int pow10[] = { 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 };
    int i = pow10[n > 0 && n <= 10 ? n - 1 : throw out_of_range("n is out of range")];


UncleFucka schrieb am 27.10.2006 um 17:55

jo, eh klar. thx leute!




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025