rechenoperation an funktionen übergeben in c/c++

Gast #1049630
Lesenswert?

>In dem du aus den Rechenoperationen eine Funktion machst und die
>Addresse der Funktion uebergibst.

Man könnte es auch einfach mit einer switch-case-Abfrage machen, wenn 
man sich auf ein Rechen-Operationen-System festlegt.
Gast #1049673
Lesenswert?

danke :-)

das würde aber voraus setzen das ich für jede mathematische op eine 
funktion erstellen muss, oder?

ich würde die operation gern als define schreiben und über geben:

#define exponentiell     y=x^2
#define linear           y=1
Gast #1049691
Lesenswert?

erstell doch nen enum für deine funktionen

typedef enum OPERATIONEN {
  QUADRATISCH,
  LINEAR};

und übergib dann beim funktionsaufruf diese:

void FuelleFeld (datatyp_feld* feld, OPERATIONEN funktion) {
  switch (funktion) {
    case EXPONENTIELL:
      feld->y = (feld->x) ^ 2;
    break;

    case LINEAR:
      feld->y = (feld->x);
    break;

    default:
    break;
  }
}

oder du definierst deine Funktion halt immer als

y = (a * x) ^ b + c

und übergibts a,b und c einzeln.

mfg
TheMiB
Gast #1049697
Lesenswert?

Ich vermute mal ganz stark, dass das eingentliche Problem ist, dass du 
etwas einfaches auf eine sehr komplizierte Art und weise lösen möchtest. 
Denn deine Frage ist eine äußert ungewöhnliche Problemstellung.
Gast #1049728
Lesenswert?

Die Kollegen haben ja schon ein paar Lösungsmöglichkeiten angegeben. 
Aber Du solltest vielleicht über die Nachfrage von Klaus doch ein paar 
Augenblicke nachdenken.

Grundsätzlich ist es garnicht so ungewöhnlich, das man Operationen 
dynamisch gestalten muss. D.h. das die eigentliche Operation erst zur 
Ausführungszeit festgelegt wird.

Welche Lösung Du verwendest hängt im wesentlichen davon ab, "wie" 
dynamisch das sein soll, oder genauer, welche Varietät von Operationen 
da auftauchen kann und auf welche Weise sie ausgewählt werden.

1. Jeweils nur eine Operation von etwa 2-3 bis zu 10 oder auch mehr. Die 
Anzahl ist aber grundsätzlich beschränkt. Die jeweilige Operation ist 
festgelegt. Es geht nur um eine Auswahl von zur Kompilierzeit schon 
festgelegten Operationen.
Dann machen die Lösungen von Helmi und stk500-besitzer Sinn.

2. Die Operationen lassen sich nicht vorher festlegen. Der Benutzer legt 
diese fest und beschreibt sie.
Dann kannst Du eine Script-Sprache einbinden (etwa FORTH, etc.) in 
welcher der Benutzer dann eigene "Programme" formuliert.

Deine Idee mit den defines geht jedenfalls nicht. Bedenke das #define 
nur Textersatz zur Kompilierzeit ermöglicht. Keine Dynamische Auswahl 
zur Laufzeit.

Ehrlich gesagt, denke ich das Lösung 2 vielleicht noch ein wenig 
jenseits Deiner Fähigkeiten liegt (z.B. wegen dem define als 
Lösungsanzatz). Aber ich kann mich ja auch irren. Wenn Du selbst 
ähnliche Zweifel hast, empfehle ich Dir erstmal Lösung 1 zu probieren 
und auszureizen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren