/* Beispiel-Programm zur Uebergabe von Funktionen * * * * C-Praktikum Matthias Gross, Fachhochschule Koeln * * * * Das Programm TestFkt wertet entweder cos oder sin in der * * Funktion IntegralTrapez aus. * * * * Aufruf ueber: TestFkt [sin] * * * * ACHTUNG: Dieser C-Source stellt nur einige Beispiele zusammen und * * ist noch kein ausgereiftes Programm!! * * Kommentare sind waehrend der Besprechung zu ergaenzen!! */ #include #include #include #include double IntegralTrapez(double a, double b, double (*f)(double)) /* Berechnet den Wert des bestimmten Integrals a bis b von der uebergebenen Funktion f(x). f(x) muss vom Typ double f(double) sein. */ { printf("a = %le; f(a) = %le\n", a, f(a)); printf("b = %le; f(b) = %le\n\n", b, f(b)); return (b-a)/2.0*(f(a)+f(b)); /* Hier bessere Formel verwenden!!! */ } int main(int argc, char *argv[]) /* Hauptprogramm */ { int f = 0; /* 0 = cos(x) */ double Integral; if ( argc==2 && strcmp(argv[1],"sin")==0) f=1; /* 1 = sin(x) */ Integral = IntegralTrapez( 0.0, 0.5, (double (*)(double))( f ? sin : cos )); /* Uebergibt entweder sin oder cos an Funktion */ printf("Int 0 - 0,5 von %s(x) = %le\n\n", ( f ? "sin" : "cos" ), Integral); return 0; /* Alles OK */ }