Potenzfunktion



  • Ich habe zwar gelesen, dass es in math.h eine Funktion namens pow gibt, die Potenzen berechnet, aber ich wollte selber eine Potenzfunktion schreiben. Beim kompilieren geht alles glatt, doch spuckt mir das Programm als Ergebnis immer irgendeine unheimlich gigantische Zahl raus. Es wird nichtmal x hoch 0 richtig ausgegeben.

    #include <stdio.h>
    
    double x_hoch_n (double x, int n);
    
    int main(void)
    { double x, y;
      int n;
    
      printf("Basis: ");
    
      scanf("%lf", &x);
      printf("\nExponent: ");
      scanf("%d", &n);
      y = x_hoch_n (x,n);
      printf("\n\n%.2lf^%d = %lg", x, n, y);
    
      fflush(stdin);
      getchar();
    
      return 0;
    }
    
    double x_hoch_n (double x, int n)
    { int i;
      double y;
    
      if(n=0)
      { y=1;
      }
    
      if(n>0)
      { if(n!=1)
        { for(i=2;i<=n;i++)
          { x *= x;
          }
          y=x;
        }
        else
        { y=x;
        }
      }
    
      if(n<0)
      { for(i=1;i<=n;i++)
        { x = 1/x;
        }
        y=x;
      }
      return y;
    }
    

    Noch eine kleine Frage nebenbei, die zwar nichts mit dem Thema hier zu tun hat, aber dafür lohnt es sich auch nicht einen extra Thread aufzumachen. Ich werde daraus nicht schlau.

    if(*n % 2 == 0)
    

    Ausgesprochen heißt es ja soweit ich es verstehe sowas wie: Wenn der Inhalt von dem worauf der Zeiger n zeigt [keine Ahnung] gleich 0 ist, dann....
    Aus dem % 2 werde ich aber irgendwie nicht schlau draus.



  • Zeile 27
    if (n=0)
    vs
    if (n==0)



  • = ist für Zuweisungen und == für vergleiche.



  • copgl schrieb:

    Zeile 27
    if (n=0)
    vs
    if (n==0)

    Aaaaach, das war's. Danke. Blöder Flüchtigkeitsfehler von mir... 😞



  • % ist der modulo operator. n % 2 == 0 prüft, ob n eine gerade Zahl ist.

    btw, die Routine für negative Exponenten sieht auch verdächtig aus -- fehlt da evtl. eine Multiplikation in der Zuweisung?



  • Ist mir gerade auch aufgefallen, dass die Rechnungen in der Funktion unten total vermurkst sind.

    Danke für die Antwort.



  • Jolka schrieb:

    Ist mir gerade auch aufgefallen, dass die Rechnungen in der Funktion unten total vermurkst sind.

    Danke für die Antwort.

    Warum überhaupt nochmal die ganze Potenzierungsschleife schreiben?



  • Morgen ist Klausur und mein so ziemlich einziges wirkliches Problem was C an sich betrifft sind Funktionen.


Anmelden zum Antworten