Funktionen in C++

Gast #3874163
Lesenswert?

Hi,

hab versucht ein Programm zu schreiben, das mir die Funktionswerte von 
f(x)=e^(sin(x)) bestimmt.

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
  double x;
  cout << "Gib ein x ein!" << endl;
  cin >> x;
  double sin_x = sin(x);
  double exp(1.0);

  cout << pow(exp(1.0),sin_x) << endl;

}

Wo ist denn hier der Fehler? Jedenfalls ist in der vorletzten Zeile exp 
rot unterkringelt, mit dem Hinweis: Error: Der Ausdruck muss einen 
(pointer-to-)Funktionstyp aufweisen. Irgendwie kann ich damit jetzt 
überhaupt nichts anfangen

LG
Gast #3874169
Lesenswert?

sieht ja auch komisch aus.

> double exp(1.0);
was meinst du damit?

double exp = 1.0?

> cout << pow(exp(1.0),sin_x) << endl;
hier schon wieder

exp(1.0)
was soll das sort?


entweder willst du eine variable anlegen mit dem Namen exp oder eine 
Funktion aufrufen.
#3874174
Lesenswert?

exp ist eine Funktion. Genauso wie sin.

Du hast ja auch nicht
1
double sin(x);
geschrieben. Sondern du hast eine Variable definiert
1
double sin_x
die du mit dem Ergebnis des Funktionsaufrufs sin(x) initiallisiert hast.
1
double sin_x = sin(x);


exp ist eine Funktion. Aber du hast keine Variable, die das Ergebnis des 
Funktionsaufrufs aufnehmen würde.
Moderator #3874191
Lesenswert?

Statt
1
  double exp(1.0);
2

3
  cout << pow(exp(1.0),sin_x) << endl;

wolltest du wahrscheinlich schreiben:
1
  double e = exp(1.0);  // Eulersche Zahl e = 2.71828...
2

3
  cout << pow(e, sin_x) << endl;   // e ** sin_x

pow(e, irgendwas) ist aber gerade exp(irgendwas), denn genau so ist die
exp-Funktion definiert. Allso schreibst du besser:
1
  cout << exp(sin_x) << endl;   // e ** sin_x

und lässt die Zeile darüber weg.

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