Zum Inhalt springen

C potenzrechnung ?


Empfohlene Beiträge

Geschrieben

servus

ich wollte mit "pow" potenzen berechnen...man gibt die basis an und den exponent ebenfalls.

Wie würde die funktion aussehen ? ich bekomm es einfach net auf die reihe ?

gruß

Geschrieben (bearbeitet)

will eine standart nehmen bzw mit pow

edit:

hier mal der quelltext

int pow (int x,int y )

{

if (x==1) return 1;

return x * pow ( x,y );

return 0;

}

Bearbeitet von amm0
Geschrieben
will eine standart nehmen bzw mit pow
Bitte was? Vollständige deutsche Sätze erleichtern das Verständnis.

hier mal der quelltext

Ja, schöne Endlosrekursion. Die Funktion ruft sich selbst immer wieder mit denselben Parametern auf. Wie soll das jemals enden?

Geschrieben

ich schreib hier rein, damit wir geholfen wird und nicht dass ihr über meine deutschkenntnisse spekuliert

ja dass es ins endlose läuft hätte ich mir auch fast gedacht, nur wie wärs mal mit einem vorschlag für die fehlerbehebung ?:floet:

Geschrieben
nur wie wärs mal mit einem vorschlag für die fehlerbehebung ?:floet:

Gegenfrage: Wie wär's mit einer ausformulierteren, mehr oder weniger verständlichen Fehlerbeschreibung? :rolleyes:

Geschrieben
ich schreib hier rein, damit wir geholfen wird und nicht dass ihr über meine deutschkenntnisse spekuliert
Je mehr Mühe du dir beim Erstellen deiner Beiträge gibtst, desto besser kann dir geholfen werden. Und warum sollten sich die Helfer mehr Mühe geben als du?

ja dass es ins endlose läuft hätte ich mir auch fast gedacht,
Ja, nur geschrieben hast du es nicht. Wir haben anderthalb Stunden damit vertan, rauszufinden, was nun eigentlich das Problem ist.

nur wie wärs mal mit einem vorschlag für die fehlerbehebung ?:floet:
Mach's halt richtig ;)

Im Ernst: Mach dir klar (am besten mit Papier und Bleistift), was passiert, wenn deine Funktion beispielsweise mit (4,2) aufgerufen wird. Dann sollte dir sofort auffallen, was das Problem ist.

Geschrieben

Und nun eine ausführliche Antwort:

Das Problem ist, dass deine Methode ebenfalls pow heißt, genauso wie die Funktion aus der Standard-C-Library. Lösung: Benenn deine Methode um

pow(2,3) = 2³

D.h. du brauchst gar keine Abfragen ob x = 1, weil pow(1,irg.was)=1^irg.was=1 ist.

Auch brauchst du das richtige Ergebnis nicht nochmal mit x zu multiplizieren, das würde nur den Exponenten um 1 erhöhen, außer das ist von dir so gewollt.

Noch ein Tipp: Benutze als Rückgabewert long int, da die Werte schnell wachsen und du mit int schneller einen Überlauf bekommen könntest als mit long int.

Wenn du pow selber implementieren willst, dann ist es am einfachsten mit einer Schleife:

long int eigenepow(int x, int y) {

int i;

long int ergebnis = 1;


for (i=0; i<x; i++) ergebnis = ergebnis * x; 

return ergebnis;

}

Code nicht getestet

Geschrieben

Da editieren nicht geht... mir fällt da noch ein, für pow musst du die math.h includen und evtl.mit dem flag -lm compilieren, außerdem gibt pow(x,y) einen double-Wert zurück und int long gibts in C ja gar nicht :-D Das habe ich noch von Object Pascal im Blut ;) Naja wie gesagt, brauchst ja eh double, oder du machst dir eine eigene Methode, dann am besten mit long, und mein Code da funktioniert nur mit positiver Basis (x). Aber leicht zu verfollständigen

MfG

Geschrieben
ist pow 1^irg =1 oder irg^0 = 1? Würd gern den standardwert wissen?!? Weiß das zufällig jemand?

Ja, jede Formelsammlung und auch Wikipedia.

Let me google that for you

Beim Wikipediaeintrag gibt es eine schoene Tabelle!

Gibt es da nicht einen Spruch in der Richtung "Gott hilft dem, der sich selbst hilft!"? Die Hemmschwelle eine Suchmaschine zu benutzen scheint immer hoeher zu werden...:rolleyes:

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...