amm0 Geschrieben 10. Dezember 2009 Geschrieben 10. Dezember 2009 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ß Zitieren
Klotzkopp Geschrieben 10. Dezember 2009 Geschrieben 10. Dezember 2009 ich bekomm es einfach net auf die reihe ? Das ist eine völlig unzureichende Fehlerbeschreibung. Willst du die Funktion jetzt selbst schreiben, oder nur die bestehende Funktion der Standardbibliothek benutzen? Zitieren
amm0 Geschrieben 10. Dezember 2009 Autor Geschrieben 10. Dezember 2009 (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 10. Dezember 2009 von amm0 Zitieren
Klotzkopp Geschrieben 10. Dezember 2009 Geschrieben 10. Dezember 2009 will eine standart nehmen bzw mit powBitte 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? Zitieren
amm0 Geschrieben 10. Dezember 2009 Autor Geschrieben 10. Dezember 2009 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: Zitieren
TDM Geschrieben 10. Dezember 2009 Geschrieben 10. Dezember 2009 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? Zitieren
Klotzkopp Geschrieben 10. Dezember 2009 Geschrieben 10. Dezember 2009 ich schreib hier rein, damit wir geholfen wird und nicht dass ihr über meine deutschkenntnisse spekuliertJe 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. Zitieren
konsti4u Geschrieben 11. Dezember 2009 Geschrieben 11. Dezember 2009 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 Zitieren
konsti4u Geschrieben 11. Dezember 2009 Geschrieben 11. Dezember 2009 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 Zitieren
bequiet Geschrieben 11. Dezember 2009 Geschrieben 11. Dezember 2009 ist pow 1^irg =1 oder irg^0 = 1? Würd gern den standardwert wissen?!? Weiß das zufällig jemand? Zitieren
Pointerman Geschrieben 11. Dezember 2009 Geschrieben 11. Dezember 2009 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... Zitieren
truebsalgeblaese Geschrieben 11. Dezember 2009 Geschrieben 11. Dezember 2009 nicht oder, sondern und.... 1^irgendwas = 1 irgendwas^0 = 0 Irgendwie muss ich gerade mal wieder an eine der vorangegangenen Diskussionen denken, wo es um die Mathekenntnisse als Fachinformatiker ging... tsg Zitieren
Klotzkopp Geschrieben 11. Dezember 2009 Geschrieben 11. Dezember 2009 irgendwas^0 = 0Du meinst wahrscheinlich irgendwas^0 = 1. Zitieren
truebsalgeblaese Geschrieben 11. Dezember 2009 Geschrieben 11. Dezember 2009 Jub... =1 man sollte net "nebenbei" noch im Forum was posten, wenn das Hirn schon voll ist... sorry tsg Zitieren
Empfohlene Beiträge
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.