Funktion in Funktion definieren
-
Hallo nochmals,
ich hätte da noch ein Problem an dem ich hänge.
Ich habe eine Funktion x*x^0.25+PI.
Diese Funktion soll laut Aufgabenstellung für den Wer x=4.0 in einer C Funktion gerechnet und anschliessend an main wieder zurückgegeben werden.Da es in einer Funktion gerechnet werden soll, habe ich also eine neue Funktion definiert an die mein Parameter x übergeben wird.
In dieser Funktion wollte ich mit einer weiteren Funktion "pow" die Potenz berechnen.
Anschließend diesen Wert mit x und Pi multiplizieren und das alles zurück an main geben.Genau da krieg ich aber einen Fehler rein und das Programm startet nicht.
Geht das überhaupt eine Funtion in einer Funktion zu definieren?
Wäre euch für eure Hilfe sehr dankbar!#include <stdio.h> #include <math.h> #define _USE_MATH_DEFINES float funktion (float x1, float y1); float pow( float x1, float y1); int main (void) { float x, z, y; x = 4.0; y = 0.25; z = funktion (x,y); printf("Ergebnis:%f",z); return 0; } float funktion (float x1, float y1) { float a, b; a= pow (x1,y1); b= M_PI + a* x1; return b; }
-
Nein, in C kann man keine Funktion innerhalb einer Funktion definieren.
Das Problem hier ist, dass in math.h pow bereits als double pow(double x,double y); deklariert wurde, diese Deklaration steht im Typkonflikt mit deiner Deklaration von pow (C kennt keine Funktionsüberladung).Für floats kannst du ab C99 powf verwenden.
-
Vielen Dank schoneinmal!
D.h. ich müsste nur eine Funktion erstellen, in der ich zuerst selbst die Potenz (ohne pow) erstelle, dann: Pi* diesen Wert + x
und das ganze dann zurück an main geben, oder?
Anders kann ich mir keinen Reim drauf machen, da in der Aufgabenstellung steht, dass die Rechnung in einer C Funktion stattfinden soll!
-
Das Wort Funktion hat mehrere Bedeutungen:
"f(x) = x + 1" ist eine Funktion.
void foo(int bar);
ist auch eine Funktion.Das ist gemeint, wenn da steht, dass du die Funktion in einer Funktion berechnen sollst.
-
neonlogist schrieb:
Vielen Dank schoneinmal!
D.h. ich müsste nur eine Funktion erstellen, in der ich zuerst selbst die Potenz (ohne pow) erstelle, dann: Pi* diesen Wert + x
und das ganze dann zurück an main geben, oder?
Anders kann ich mir keinen Reim drauf machen, da in der Aufgabenstellung steht, dass die Rechnung in einer C Funktion stattfinden soll!Benutz einfach pow aus der Standardbibliothek.