Hoch rechnen
-
Hi Leute!
Hab ein kleines Problem.
Ich möchte zwei Dezimalzahlen hoch rechnen:int main() { float a; float b; scanf("%f",a); scanf("%f",b); printf("%f",a"hoch %f",b"= %f",a^b); getchar(); getchar(); return 0; }
aber bei a^b kommt bei der Compilierung immer ein Fehler.
Wenn ich statt float int verwende funktioniert alles einwandfrei.
Wie kann ich zwei Dezimalzahlen hoch rechnen?
-
Die Eingabe der Zahlen funktioniert anders (scanf("%f", &a), beachte das Ampersand-Zeichen). printf funktioniert übrigens auch anders als Du das verwendest.
Potenzieren geht mit der Funktion pow aus math.h. pow(a, b) = a hoch b.
^ist ein XOR-Operator, der also bitweise arbeitet. Potenzieren tut der in C nicht.
-
ist es boese, jetzt RTFM zu schreien?
-
No, nicht wirklich da bis auf float a; float b; und return 0; und (vielleicht auch getchar();) alles falsch ist, was oben im Code steht.
-
Bin selber noch Anfänger, aber ich würde das in etwa so machen:
#include <stdio.h> int main(void) { int a, b; int result; int count; printf("\nBasis eingeben ==> "); scanf("%d", &a); printf("\nExponent eingeben ==> "); scanf("%d", &b); result = a; for (count = 1; count < b; count++) result *= a; printf("\n\nErgebnis: %d", result); return 0; }
Jetzt kannst Du den Code noch ändern, dass es für einen 0 Exponent eine Sonderregelung gibt.
Negative Exponenten anders ausgewertet werden ect.
-
leider geht dein programm nicht für float zahlen
so far
stelferps. wozu einfache funktionen selber schreiben wenn die in einer bibo sind das einziste was man machen kann/soll ist sich mit den algorhitmus auseinanderzusetzen
-
Simonek schrieb:
Bin selber noch Anfänger, aber ich würde das in etwa so machen:
for (count = 1; count < b; count++) result *= a;
mit integers geht's viel schneller, wenn man den exponenten in zweierpotenzen zerlegt und die dann multipliziert.
beispiel: x^13 == x^(8+4+1) == x^8 * x^4 * x^1
dabei kommt man mit ein paar shifts und viel weniger multiplikationen aus.Stelfer schrieb:
ps. wozu einfache funktionen selber schreiben wenn die in einer bibo sind...
gibt's ne fertige funktion um 'ints' zu potenzieren? ich glaub' nicht...
:xmas2:
-
ten schrieb:
Stelfer schrieb:
ps. wozu einfache funktionen selber schreiben wenn die in einer bibo sind...
gibt's ne fertige funktion um 'ints' zu potenzieren? ich glaub' nicht...
:xmas2:Ja, pow() kann auch Ganzzahl-Werte verarbeiten (genauer: der int-Wert wird nach double umgewandelt und dann potenziert - das Ergebnis kannst du dann wieder in einen int zurückrechnen).
-
ten schrieb:
Stelfer schrieb:
ps. wozu einfache funktionen selber schreiben wenn die in einer bibo sind...
gibt's ne fertige funktion um 'ints' zu potenzieren? ich glaub' nicht...
Jein, aber das ist (wie so oft) eh nicht Thema des Threads, da es hier um floats geht.
-
CStoll schrieb:
ten schrieb:
gibt's ne fertige funktion um 'ints' zu potenzieren? ich glaub' nicht...
:xmas2:Ja, pow() kann auch Ganzzahl-Werte verarbeiten (genauer: der int-Wert wird nach double umgewandelt und dann potenziert - das Ergebnis kannst du dann wieder in einen int zurückrechnen).
kommt drauf an, ob das targetsystem es so locker wegsteckt, wenn man mit kanonen auf spatzen schiesst...
rüdiger schrieb:
...aber das ist (wie so oft) eh nicht Thema des Threads, da es hier um floats geht.
hast ja recht
:xmas2:
-
ten schrieb:
kommt drauf an, ob das targetsystem es so locker wegsteckt, wenn man mit kanonen auf spatzen schiesst...
wegstecken sicher. Würde mich nur wundern, wenn es auf irgend einem System schneller wäre, als eine Schleife