Kann man mit C++ Funktionen Verschachteln?
-
Hallo!
Habe folgendes Problem:
Ich soll mittels simpson-Regel die Näherung eines Integral optional von 2 Funktionen f1 und f2 mit beliebigen Grenwerten bestimmen. f1 und f2 soll ich mit pointern in die Simpson Fkt einbringen.
Folgendes habe programmiert:
#include <iostream>
#include <cmath>using namespace std;
int i;
double x=0, n, a, b, h= ( b-a )/ (2*n), *f, ;/*
i ist Laufindex
a obere Grenze, b untere Grenze
h und n in Simpson verwendetdouble f1 (double &x)
{
double y;
y=( exp(x) + 1/ exp(x) )/2 * cos(x);
return y;
}double f2 (double &x)
{
double y;
y= 4 / ( 1+ x*x );
return y;
}double simpson(a, b, n)
{
double S1=0, S2=0, I, ha, hb;
for ( i=3; i<= (n-2) /2; i=i+2)
{
x=a+i*h;
S1= S1 + f;
}for ( i=2; i< (n-1) /2 +1; i=i+2)
{
x= a+ i*h;
S2=S2+ f;
}
x=a;
ha = f ;
x=b;
hb= f ;I= h/3 * ( ha + hb + 4* S1 + 2* S2);
return I;
}Doch so lässt sich das ganze nich kompilieren. Weiß nichtmehr weiter...
-
N' Abend erstmal,
Also erstmal würde ich dir Code-TAGS für deine weiteren Posts empfehlen, dann werden die nämlich schneller beantwortet, da übersichtlicher!
Dann ist mir bei deinem Code aufgefallen, das er sehr viele Fehler enthält -das sind Grundlagen- ... mal ein Beispiel:
int i; double x=0, n, a, b, h= ( b-a )/ (2*n), *f, ;Das /\ könnte in etwa so (richtig!) heißen (ich weiß ja nicht was du vor hast
):int i; double x = 0, n, a, b, h, *f; // Initialisierungen: a = ...; n = ...; // ... h = (b - a) / (2 * n); // (2 * n) darf nie 0 werden!Sry, aber du solltest dich erstmal mit den Grundlagen von C++ beschäftigen, glaube das hat sonst kein Sinn
(Bitte nicht böse sein...
)Dann machst du einen zeilenübergreifenden Kommentar auf, den du nicht mehr schließt ...

Hier:
/* i ist Laufindex a obere Grenze, b untere Grenze h und n in Simpson verwendetDann vllt. noch etwas zum Titel deines Posts:
Man kann Funktionen nicht ineinander definieren...
Also so etwas geht nicht:void func_erstens(void) { // ... void func_drinnen(void) { // ... // ... // ... } // ... }Du kannst sie aber in einer aufrufen, musst ggf. einen Prototypen der Funktion voranstellen, falls diese vorher nicht definiert wurde.
Hoffe ich konnte helfen...
