bin ich vollkommen bescheuert, oder was? eine funktion zum errechnen von exponenten
-
ok, aber jetzt mal abegesehen davon, dass ich nicht potenziere (ah, jetzt fällt mir der begriff wieder ein) :), wieso kriege ich etwas undefiniertes raus? ich mein, ich gebe für a im programm 2 ein, dann dürfte doch nicht 0 rauskommen, weil 2*2 eben 4 und nich null is.
-
Integer Overflow
-
du kannst deinen code auf das hier runterkürzen:
std::cout << 65536 * 65536 << std::endl;
Bei mir ergibt das 0.
-
Ponto schrieb:
Du potenzierst hier aber nicht sondern rechnest a(2(b-1))
Wie kommst du auf "a(2(b-1))"???????
Mr. B
-
Mr. B schrieb:
Ponto schrieb:
Du potenzierst hier aber nicht sondern rechnest a(2(b-1))
Wie kommst du auf "a(2(b-1))"???????
Mr. B
Mit jedem Schleifendurchlauf quadrierst Du a, deshalb ist
1. a = aa
2. a = (a*a)*(aa)
3. a= (a*a*a*a) * (a*a*a*a)
usw. usf.was Du brauchst ist
a *= a;
-
Mr. B schrieb:
Ponto schrieb:
Du potenzierst hier aber nicht sondern rechnest a(2(b-1))
Wie kommst du auf "a(2(b-1))"???????
Mr. B
Weil wenn b = 4 und a = 2 ist, rechnest du zuerst
a = 2 * 2; // a = 4
--b // b = 3in der nächsten Iteration:
a = 4 * 4; // a = 16
--b; // b = 2und in der letzten dann:
a = 16 * 16;
--b; // b = 1Das heisst du quadrierst dein a von Iteration zur Iteration. Das ist aber nicht der Sinn des Potenzierens.
-
Ein Gast schrieb:
was Du brauchst ist
a *= a;
Fast
Die Variable c sollte genutzt werden:
c = a; while(b>1) { c = c * a; b--; } cout << "\n\nergebnis: "; cout << c;
-
Ich geb zu, der Code ist trotzdem ein wenig unübersichtlich, aber so klappts:
#include <iostream> using namespace std; int main() { int zahl, exponent, ergebnis, temp = 1; cout << "Geben Sie eine Zahl ein: "; cin >> zahl; cout << "\nGeben Sie den Exponenten ein: "; cin >> exponent; if(exponent == 0) { cout << "\n\nErgebnis: 0"; return 0; } ergebnis = zahl; while(temp<exponent) { ergebnis = ergebnis * zahl; temp++; } cout << "\n\nErgebnis: " << ergebnis; return 0; }
Danke,
Mr. B
-
Mr. B schrieb:
Ich geb zu, der Code ist trotzdem ein wenig unübersichtlich, aber so klappts
immer noch nicht richtig
if (exponent == 0) { ergebnis = 1; }
-
jetzt blamier ich mich aber
entweder das haben wir damals nicht dazu gelernt, oder ich habs vergessen.
x^0 = 1
x^1 = x
x^2 = x * x*lern*
Mr. B